感谢您抽出宝贵时间阅读这篇文章。最后积累了足够的勇气在这里问一个问题:)希望我以正确的方式提出我的问题。
我的问题是我试图在页面周围随机设置“方块”动画,但是我遇到了setInterval方法的问题。
您可以在http://jsfiddle.net/xEMXh/
找到它在Init函数中,我试图通过每个ghost元素并设置一个间隔函数,然后每X秒以随机方向对其进行动画处理。
for (ghostCount = 0; ghostCount < ghosts.length; ghostCount += 1) {
var speed = LesMccutcheon.GhostHunter.GetSpeed($(ghosts[ghostCount]).attr('data-speed')),
activeGhost = ghosts[ghostCount];
window.setInterval(function() {
LesMccutcheon.GhostHunter.MoveInDirection(activeGhost);
}, speed);
}
正在发生的事情只是最后一个“幽灵”元素是动画。我知道这是因为在for循环中我覆盖了变量,当第一个间隔被调用时,activeGhost是for循环中的最后一个。
我尝试在set.Interval中直接使用 ghosts [ghostCount] ,但似乎设置的间隔无法访问此项。我尝试将它设置为set.Interval anom函数内的变量,但它记录为undefined。
我唯一另外一半的想法是尝试设置增量var标识符,但这似乎非常适得其反,并不是一个好方法。
提前感谢任何建议!
莱斯
答案 0 :(得分:2)
将为每个循环覆盖变量activeGhost
。
只需将setInterval
的调用放入这样的闭包中
( function (activeGhost) {
window.setInterval(function() {
LesMccutcheon.GhostHunter.MoveInDirection(activeGhost);
}, speed);
} ( activeGhost) );
这样就应该保留对正确元素的引用。