timeline
セレクターと、そのオブジェクトに適用する遅延とアニメーションのリストをリストする定義があります。特定のオブジェクトのステップをループするように指定できます。
アニメーションをキューに入れるために使用される関数は次のとおりです。
function animateWithQueue(e, obj) {
if ($.queue(e[0]).length == 0) {
e.queue(function doNext(next) {
$.each(obj.steps, function(i, step) {
e.delay(step.pause).animate(step.anim, step.options);
});
if (obj.loop) {
e.queue(doNext);
}
next();
});
}
}
ここにtimeline
情報があります
var timeline = {
'.square': {
loop: true,
steps: [
{ pause: 800, anim: { right: '+=200' }, options: { duration: 400} },
{ pause: 1000, anim: { right: '-=200' }, options: { duration: 400} }
]
},
'.circle': {
loop: true,
steps: [
{ pause: 1200, anim: { top: '+=200' }, options: { duration: 400} },
{ pause: 1200, anim: { top: '-=200' }, options: { duration: 400} }
]
}
};
そして、timeline
これが上記のアニメーション関数にを入れる関数です:
$.each(timeline, function(selector, obj) {
animateWithQueue($(selector), obj);
});
これが完全な例です。http://jsfiddle.net/sprintstar/Tdads/
このコードは正常に機能しているように見えます。アニメーションループと停止ボタンをクリックして、アニメーションを停止したり、キューをクリアしたりできます。ただし、直面している問題は、停止を押して何度も(たとえば10回)やり直すことで発生する可能性があります。 。次に、遅延が正しく機能しなくなり、シェイプがはるかに速く移動することに注意してください。
これはなぜですか、またどのように修正できますか?