javascript - 循环延迟超时问题

标签 javascript loops delay

我正在开发一款 HTML5 游戏,目前正在尝试制作一种可以在几秒后发射 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 个函数,间隔 1 秒,每个函数根据你的逻辑发射一颗子弹。

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

如果需要完成的操作超过 3 个,我建议改用 setInterval()。但在如此低的区域,setTimeout() 应该没问题。

关于javascript - 循环延迟超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116344/

相关文章:

javascript - 测试一下具有 json 值的图像是否损坏/或不存在并替换为 "no-photo"图像?

javascript - ng-select 添加带有异步搜索的新选项

python - Pandas 返回空的DataFrame,空的列和空的索引

c - 如何将两个二维数组中的整数添加到用户指定长度的新二维数组中?

ios - 如何在加载的早期阶段在 iOS 中使用 Storyboard实例化特定的 View Controller ?

javascript - 执行代码但延迟JS中某个函数的 'return'

JavaScript 刽子手游戏;仅显示错误的猜测,当用户获胜时发出警报

javascript - 改善 Javascript 加载时间 - 串联与多个 + 缓存

python - 在 Python 中将 `if` 添加到生成器表达式的正确方法是什么?

java - 我如何设置 DelayQueue 的延迟