曲線のパスに沿ってパス (実際には一連のパスですが、それについて説明します) をアニメーション化したいと考えています。
RaphaelJS 2 はanimateAlong
、私が識別できなかった理由により、このメソッドを削除しました。Zevanによって抽象化された Raphael ドキュメントのgears demoを掘り下げると、次のようになりました。
//adding a custom attribute to Raphael
(function() {
Raphael.fn.addGuides = function() {
this.ca.guide = function(g) {
return {
guide: g
};
};
this.ca.along = function(percent) {
var g = this.attr("guide");
var len = g.getTotalLength();
var point = g.getPointAtLength(percent * len);
var t = {
transform: "t" + [point.x, point.y]
};
return t;
};
};
})();
var paper = Raphael("container", 600, 600);
paper.addGuides();
// the paths
var circ1 = paper.circle(50, 150, 40);
var circ2 = paper.circle(150, 150, 40);
var circ3 = paper.circle(250, 150, 40);
var circ4 = paper.circle(350, 150, 40);
var arc1 = paper.path("M179,204c22.667-7,37,5,38,9").attr({'stroke-width': '2', 'stroke': 'red'});
// the animation
// works but not at the right place
circ3.attr({guide : arc1, along : 1})
.animate({along : 0}, 2000, "linear");
3 番目の円が赤いパスに沿ってアニメーション化されるようにします。現在アニメーション化されていますが、赤いパスから 3 番目の円の元の座標に等しい距離にあります。奇妙なことに、これはtranslate
、along
オブジェクトの変換が相対 (小文字の "t") であっても絶対 (大文字の "T") であっても発生します。animate
また、呼び出しの直前に変換変換で微調整しても、常に同じ場所でアニメーション化されます。
どんな助けでも大歓迎です。ここベクトルランドでボートを降りたところです。ポインターは役に立ちます。動作するフィドルはさらに優れています。