2013-02-27 64 views
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; 

这也没有办法。有人可以在这里指出我的问题吗?

回答

3

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

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

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

} 

这将初始化相隔3个功能1S,每个根据自己的逻辑发射子弹。

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

如果要完成3个以上的动作,我建议改用setInterval()来代替。但在如此低的地区,setTimeout()应该没问题。

0

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