.animate()
属性のメソッドを使用しpath:
てパスを新しい場所に渡すことで、ある場所から別の場所に移動するパスをアニメーション化する完全に細かい単純な Raphael.js コードのように見えるものに問題があります。
ただし、古いパスから新しいパスにスムーズに移行する代わりに、移行時間と同じ時間だけ一時停止してから、アニメーションの最後にまっすぐジャンプします。
私が見ることができるコードのすべては、ドキュメントと標準パターンに従っているように見えます。クラッシュはしていませんが、予期しない動作をしているため、メッセージや直接のフィードバックはありません。
アニメーションは機能しますが、中間の遷移ステップがスキップされます。どのように、なぜ?
これがコードのJSBINライブデモです...
...そしてこれがサンプルコードです。
var paper = Raphael("huh", '100%', '100%');
paper.customAttributes.pathX = function( x ) {
var path = this.attr('path');
var origin = getPathOrigin(path);
return { path: Raphael.transformPath(path, ['T', x - origin.x, 0 ]) };
};
paper.customAttributes.pathY = function( y ) {
var path = this.attr('path');
var origin = getPathOrigin(path);
return { path: Raphael.transformPath(path, ['T', 0, y - origin.y]) };
};
paper.customAttributes.pathXY = function( x,y ) {
var path = this.attr('path');
var origin = getPathOrigin(path);
return { path: Raphael.transformPath(path, ['T', x - origin.x, y - origin.y ]) };
};
function getPathOrigin(path) {
return {x: path[0][1], y: path[0][2]};
}
var path = paper.path('M 100 100 L 105 105 L 95 105 L 95 95 L 105 95 L 100 100');
var origin = getPathOrigin(path);
path.attr({pathX: origin.x, pathY: origin.y, pathXY: [origin.x, origin.y]});
path.animate({pathX: 200},1000, 'linear', function(){
path.animate({pathY: 200},1000, 'elastic', function(){
path.animate({pathXY: [50,50]}, 1000, 'bounce');
});
});
path.animate({pathX: 200},1000, 'linear');