大家好,我正在尝试使用setInterval运行循环,但是我希望数组中的每个元素都使用一个随机间隔而不是整个数组,这样做是……到目前为止,我正在使用的代码
setInterval(function() {
for ( var j = 0; j < aliens.length; j++ ){
aliens[j].shootIt();
}
}, 1000+Math.floor(Math.random() * 4000)
);
但我有点卡在这里...预先感谢!!!
最佳答案
将for
循环移至间隔之外,然后在每次迭代中调用一个函数,以使每个间隔实例具有固定的j
。
var shootIntervals = []; //this goes in the "global" context of your game
for ( var j = 0; j < aliens.length; j++ ) {
intervals(j);
}
function intervals(j) {
shootIntervals[j] = setInterval(function() {
if (!aliens[j]) return;
aliens[j].shootIt();
}, 1000+Math.floor(Math.random() * 4000));
}
//clearInterval(shootIntervals[j]) when they're destroyed
这将为数组中的每个项目提供一个静态随机间隔。
Fiddle