我对 SVG 动画有一个相当有趣的问题。
我正在使用 Raphael 沿圆形路径制作动画
obj = canvas.circle(x, y, size);
path = canvas.circlePath(x, y, radius);
path = canvas.path(path); //generate path from path value string
obj.animateAlong(path, rate, false);
circlePath 方法是我自己创建的一种以 SVG 路径表示法生成圆形路径的方法:
Raphael.fn.circlePath = function(x , y, r) {
var s = "M" + x + "," + (y-r) + "A"+r+","+r+",0,1,1,"+(x-0.1)+","+(y-r)+" z";
return s;
}
到目前为止,一切都很好 - 一切正常。我让我的对象(obj)沿着圆形路径制作动画。
但:
仅当我在与路径本身相同的 X、Y 坐标处创建对象时,动画才有效。
如果我从任何其他坐标(例如,沿路径的中途)开始动画,则对象会在正确半径的圆中进行动画处理,但是它会从对象 X、Y 坐标开始动画,而不是沿着路径直观地显示出来。
理想情况下,我希望能够停止/启动动画 - 重新启动时会出现同样的问题。当我停止然后重新启动动画时,它会从停止的 X,Y 开始在一个圆圈中动画。
更新
我创建了一个演示该问题的页面:http: //infinity.heroku.com/star_systems/48eff2552eeec9fe56cb9420a2e0fc9a1d3d73fb/demo
点击“开始”开始动画。当您停止并重新启动动画时,它会从当前圆坐标以正确尺寸的圆继续。