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;

これもうまくいきません。誰かがここで私の問題を指摘できますか?

4

3 に答える 3

3

1 つの簡単な方法は次のようになります。

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

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

}

これにより、3 つの関数が 1 秒間隔で初期化され、それぞれがロジックに従って弾丸を発射します。

おそらく、 の個別のインスタンスを作成する必要がありますbulletInstance

実行するアクションが 3 つ以上ある場合は、setInterval()代わりに切り替えることをお勧めします。しかし、そのような低い領域では、setTimeout()問題ないはずです。

于 2013-02-27T15:51:15.633 に答える
0

目覚めないものについてより具体的にすることは助けになるでしょう。あなたの場合、問題はsetTimeoutが1回だけ実行されることです。ハンドラー内に新しいsettimeout呼び出しを作成するか、代わりにsetIntervalを使用する必要があります(完了したら、clearIntervalを忘れないでください)。

于 2013-02-27T15:52:44.370 に答える
0

jQuery からdelay()を使用できます。

于 2013-02-27T15:59:36.593 に答える