私は以下のコードを永久にアニメーションし、マウスのEnterキーで現在のアニメーションの終わりで一時停止し、マウスを離してから再開します。それは、私が1つの問題を除いてどのようにしたいかに作用します。jQuery - ループアニメーションの一時停止と再開があまりにも速いため、キューが動かなくなる
要素を素早く(たとえばコーナーを横切って)移動すると、何らかの種類のキューが生成され、すべてがうまくいきます。しかし、実際にキューをチェックすると、何も変わっていません。また、アニメーションはキューに入れられた順序で実行されていないことも明らかです。
次のコードを使用して、マウスをグレーの領域の内側と外側に振りかざしてください。最終的にアニメーションの再開を許可すると、彼らは結婚式に行きます(http://jsfiddle.net/54YTx/でも利用可能です)。
$('body').html('<div style="background: lightgrey;">Testing</div>');
function do_animations() {
// Always 0 or 1
console.log($('div').queue('fx').length);
$('div')
.delay(1000)
// Hardcoded numbers mean that resuming from the bottom position takes longer but it doesn't matter in this simple example
.animate({'padding-top': '100px'}, 1000)
.animate({'padding-top': '0px'}, 1000)
// Queue instead of callback so that clearQueue() can stop the loop reliably
.queue(function() {
do_animations();
$('div').dequeue();
});
};
do_animations();
$('div').hover(function() {
// Don't use stop(). We want the current animation to finish
$('div').clearQueue();
}, function() {
do_animations();
});
私は ''アニメーション() ''デフォルトでは '' fx''キューに入った?と思いましたか'' stop() ''はループを終了させ、 '' $(this) ''を '' $( 'div') ''に変更して正しいキューをターゲットにしていることを確認します。 –
'stop()':_Description:一致する要素の現在実行中のアニメーションを停止します._ stopを追加することで、アニメーションを停止/待機し、アニメーションを100に、アニメーションを0 /キューに戻してやり直します。あなたのコードを変更しようとしましたか? – StilgarBF
はい、私はそれを試して、私はそれがループを殺すと言ったように。私の質問にはjsfiddleがあり、そこでは自分のコードに対してもテストを行うことができます。 –