2013-02-27 91 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代替(只需記住清除時間,以便它停止)