循环延迟超时问题

Loop Delay Timeout Issue

本文关键字:问题 超时 延迟 循环      更新时间:2023-09-26

我正在制作一款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;

这也行不通。有人能指出我的问题吗?

一个简单的方法是:

for(var i = 0; i < 3; i++){
   window.setTimeout( function(){ player.bullets.push(bulletInstance); }, i * 1000 );
}

这将初始化3个函数,每个函数根据你的逻辑发射子弹。

您可能需要创建单独的bulletInstance实例。

如果有超过3个动作要做,我建议切换到setInterval()代替。但在这样低的地区,setTimeout()应该是好的

更具体地说明什么不起作用会有所帮助。在您的例子中,问题是setTimeout只运行一次。你应该在处理程序中创建一个新的settimeout调用,或者使用setInterval来代替(只是记住当你完成时要clearInterval,这样它就会停止)

可以使用jQuery中的delay()