我正在开发一款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;
这也不起作用。有人可以在这里指出我的问题吗?
答案 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()。