一度に複数のアニメーションを実行するスクリプトに取り組んでおり、新しいアニメーションの開始時に基づいて、現在アニメーション化されている残りの要素を .stop() して別の場所に移動する必要があります (これは機能しています)。そこで、新しいアニメーションが追加されたときに .animate() されるアニメーションの配列を作成しました。各アニメーションが完了すると、それを配列から削除する必要があります。使用してみたコードは次のとおりです。
for (var i = 0; i < animations[key].length; i++) {
animations[key][i].object.animate({
top: animations[key][i].endCoords.top,
left: animations[key][i].endCoords.left
}, {
duration: 800,
complete: function() {
console.log(i);
animations[key].splice(i, 1);
console.log(animations);
}
});
}
問題は、完了時です: 実行i
され、animations[key].length に設定されます。アニメーションが終了する前にforループが継続しているため、なぜそれを行っているのかを理解していると確信しています(一度に複数のアニメーションを実行できるため、これは良いことです)が、コードを書く方法はありますか?完了したら: 接続を行うための適切なインデックスが実行されますか?
前もって感謝します!