0

我正在开发一款 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;

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

4

3 回答 3

3

一种简单的方法是这样的:

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

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

}

这将间隔 1 秒初始化 3 个函数,每个函数都根据您的逻辑发射子弹。

您可能必须创建单独的bulletInstance.

如果要执行的操作超过 3 个,我建议setInterval()改用。不过在这么低的地方,setTimeout()应该没问题。

于 2013-02-27T15:51:15.633 回答
0

更具体地说明什么不是 wouking 会有所帮助。在您的情况下,问题是 setTimeout 只运行一次。您应该在处理程序中创建一个新的 settimeout 调用或使用 setInterval 代替(只要记住在完成后清除Interval 以便它停止)

于 2013-02-27T15:52:44.370 回答
0

您可以使用 jQuery 中的delay()

于 2013-02-27T15:59:36.593 回答