0

感谢您花时间阅读这篇文章。终于鼓起足够的勇气在这里提出问题:) 希望我以正确的方式提出我的问题。

我的问题是我试图在页面周围随机设置“正方形”动画,但 setInterval 方法存在问题。

你可以在这里找到它http://jsfiddle.net/xEMXh/

在初始化函数中,我试图遍历每个幽灵元素并将其设置为间隔函数,然后使其每隔 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 无法访问它。我尝试将其设置为 set.Interval anom 函数内的变量,但它记录为未定义。

我唯一的另一个半生不熟的想法是尝试设置一个增量 var 标识符,但这似乎适得其反,而且不是一个好方法。

提前感谢您的任何建议!

莱斯

4

1 回答 1

2

activeGhost在您的代码中,每个循环都会覆盖该变量。只需将调用setInterval放入这样的闭包中

( function (activeGhost) {
    window.setInterval(function() {
        LesMccutcheon.GhostHunter.MoveInDirection(activeGhost);
    }, speed);
} ( activeGhost) );

这样,应保留对正确元素的引用。

于 2012-10-27T13:30:09.637 回答