大家好,我正在尝试使用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

10-02 13:32