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
「開始」をクリックしてアニメーションを開始します。アニメーションを停止して再開すると、現在の円の座標から正しい寸法の円に続きます。