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