我正在编写一个同时运行多个动画的脚本,并且根据新动画的开始时间,当前动画的其余元素必须 .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
设置为动画[key].length。我很确定我理解它为什么这样做,因为 for 循环在动画完成之前继续(这很好,因为它确实允许我一次运行多个动画),但是有没有办法编写代码所以完成后:运行它有正确的索引来做拼接?
提前致谢!