これは任意の数の円に拡張できると仮定して、使用していたのと同様のsetTimeoutとループを使用します。
アニメーションをループから機能させるには、アニメーションが後で実行されるときに参照している円がわかるように 'クロージャー'を使用する必要があります(そうでない場合、最後のオブジェクト)。
(function(){})()(イミディエイトモードと呼ばれる)の関数形式を使用すると、変数が関数スコープ内に取り込まれるようになります。
for(var i=1; i<10; i++) {
(function() { // start closure with functional scope
var circle = paper.circle(width*0.4, height*0.2, 10*i);
setTimeout(function() { circle.animate({transform: "T0,100"}, 2000); }, (i-1) * 2000 )
})();
}
jsfiddle
あなたが最初にすべての円を希望しない場合、あなたはまだ指数(私たちは関数の中でそれを明確にするために、Cに割り当てます)私をキャプチャするための閉鎖を必要とします。例えば
for(var i=1; i<10; i++) {
(function() { // start functional scope
var c = i; // c is now tied to this scope
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate({transform: "T0,100"}, 2000);
}, (c-1) * 2000 )
})();
}
jsfiddle
は、私がここにアニメーションオブジェクトを作成する必要がありますわからないんだけど、あなたがしたい場合、ドキュメントはhere
同じ例ですが、ラファエルを使用します。アニメーション。
var animation = Raphael.animation({transform: "T0,100"}, 2000)
for(var i=1; i<10; i++) {
(function() {
var c = i;
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate(animation);
}, (c-1) * 2000 )
})();
}
jsfiddle
出典
2017-04-21 12:53:34
Ian
あなたはアニメーションが任意のタイミングで開始しますか? (この場合、setTimeoutを使用してアニメーション化する関数を呼び出す)、または前のアニメーションが終了した後(アニメーションでコールバックパラメータを使用する場合)。 – Ian
最初に、最も内側の円が表示されます。 2番目の円の後(1秒後など)。その後、第3の円。 – beub
私がアニメーション化した場合:アニメーションオブジェクトを作成する方法(ドキュメンテーションを見つける場所)? – beub