0

HTML5でゲームジャム用のタワーデスゲームを作っています。塔の AI のサブルーチンがあります。しかし、この関数をループなしで呼び出すと、なぜか無限ループになってしまいます。タワーが 2 つ以上ある場合にのみ発生します。

function aiTower(id){
    if(id === 1)alert("towerId = 1 call 1");
    var l = zamerajCiel(id);
    if (l !==  null) towers[id].shoot(l.x,l.y);
    if(id === 1)alert("towerId = 1 call 2");
};

それを呼び出すループ:

function aiLoop(){
    for(i=0;i<enemies.length;i++){
        aiMon(i);
    }
    for(i=0;i<towers.length;i++){
        aiTower(i);
            if(i === 1)alert("towerId = 1 call 3");
    }
}

デバッグ メッセージは「towerId = 1 call 1」と「towerId = 1 call 2」を交互に繰り返すため、問題はおそらく aiLoop() にはありません。また、正規表現を使用して aiTower() のコードを検索しました。発生したのはこれらの 2 つだけでした。

4

1 に答える 1

2

i指定して、関数に対してローカルにしますvar i。他の場所で変更する可能性があります。

于 2012-11-10T20:37:42.160 に答える