循环延迟超时问题

时间:2013-02-27 15:49:28

标签: javascript loops delay

我正在开发一款HTML5游戏,目前正试图制造一种武器,可以在几秒钟之后发射3枚射弹。所以基本上是一支3爆发突击步枪。

我第一次做到了:

for(var i = 0; i < 3; i++){
   player.bullets.push(bulletInstance);
}
player.shotBullet = true;

虽然有效,但当然是同时释放的射弹,意味着每次射击之间没有延迟。所以我尝试引入一个setTimeout函数:

setTimeout(function (){
    i++;
    if(i < 3){
        var b = new Rectangle( player.x + (player.width / 2) - 4, player.y + (player.height / 2) - 4, 8, 8);

        player.bullets.push(bulletInstance);
    }
}, 1000)
player.shotBullet = true;

这也不起作用。有人可以在这里指出我的问题吗?

3 个答案:

答案 0 :(得分:3)

一种简单的方法是:

for(var i = 0; i < 3; i++){

   window.setTimeout( function(){ player.bullets.push(bulletInstance); }, i * 1000 );

}

这将启动3个功能1s,每个功能按照你的逻辑发射子弹。

您可能必须创建bulletInstance的单独实例。

如果要执行的操作多于3个,我建议您切换到setInterval()。但在如此低的地区,setTimeout()应该没问题。

答案 1 :(得分:0)

更具体地说明什么不是你想要的东西会有所帮助。在您的情况下,问题是setTimeout只运行一次。你应该在处理程序中创建一个新的settimeout调用,或者使用setInterval(只需记住clearInterval,当你完成它就停止了)

答案 2 :(得分:0)

您可以使用jQuery中的delay()