Snap.svg 带有文本路径的文本没有按预期进行动画处理
Snap.svg text with textpath does not animate as expected
我在使用 snap.svg 动画文本时遇到问题。我正在围绕圆弧移动文本,从圆弧的左下角到圆弧的顶点。我使用的是标准 Snap.animate 功能及其内置 setter 功能。
当我为随机元素(例如下面示例中包含的圆)制作动画时,动画的行为符合预期。当我为纯文本制作动画时,它的行为也符合预期。但是,当我向该文本添加 textpath 属性时,动画以我不理解的方式运行。
此文本按预期设置动画:
svg.text(0,200,'Regular Text').attr({'text-anchor': 'middle'});
示例(悬停动画):http://codepen.io/anon/pen/pJbmYW
而此文本未到达其所需目的地(也是弧顶:
var path = 'M0 200 A 200 200, 0, 1, 1, 400 200';
svg.text(0,200,'Arced Text').attr({'text-anchor': 'middle',
'textpath':path});
示例(悬停动画):http://codepen.io/anon/pen/GJqaVp
我想我不明白添加文本路径对文本对象有什么作用,因为看起来我应该能够 animate/transform 它的 x 和 y 坐标,就像我在添加路径之前所做的那样。
欢迎任何见解或建议。谢谢。
我认为在这种情况下为 textPath 设置 x,y 动画真的没有意义(我可能是错的),因为这对于波动线意味着什么。
我想你想要的是为 startOffset 设置动画。例如...
Snap.animate(0, arc.getTotalLength()/2,
function(val){
var point = arc.getPointAtLength(val);
circ.attr({cx: point.x,
cy: point.y});
arcText.textPath.attr({ startOffset: val})
},1000,mina.easeinout);
这一点是主要的变化...
arcText.textPath.attr({ startOffset: val})
codepen(悬停)
我在使用 snap.svg 动画文本时遇到问题。我正在围绕圆弧移动文本,从圆弧的左下角到圆弧的顶点。我使用的是标准 Snap.animate 功能及其内置 setter 功能。
当我为随机元素(例如下面示例中包含的圆)制作动画时,动画的行为符合预期。当我为纯文本制作动画时,它的行为也符合预期。但是,当我向该文本添加 textpath 属性时,动画以我不理解的方式运行。
此文本按预期设置动画:
svg.text(0,200,'Regular Text').attr({'text-anchor': 'middle'});
示例(悬停动画):http://codepen.io/anon/pen/pJbmYW
而此文本未到达其所需目的地(也是弧顶:
var path = 'M0 200 A 200 200, 0, 1, 1, 400 200';
svg.text(0,200,'Arced Text').attr({'text-anchor': 'middle',
'textpath':path});
示例(悬停动画):http://codepen.io/anon/pen/GJqaVp
我想我不明白添加文本路径对文本对象有什么作用,因为看起来我应该能够 animate/transform 它的 x 和 y 坐标,就像我在添加路径之前所做的那样。
欢迎任何见解或建议。谢谢。
我认为在这种情况下为 textPath 设置 x,y 动画真的没有意义(我可能是错的),因为这对于波动线意味着什么。
我想你想要的是为 startOffset 设置动画。例如...
Snap.animate(0, arc.getTotalLength()/2,
function(val){
var point = arc.getPointAtLength(val);
circ.attr({cx: point.x,
cy: point.y});
arcText.textPath.attr({ startOffset: val})
},1000,mina.easeinout);
这一点是主要的变化...
arcText.textPath.attr({ startOffset: val})
codepen(悬停)