タイマー関数内に 2 つの if ステートメントがあり、敵の HP が 0 かどうかをチェックします。敵は配列に追加されます。1 つの敵の HP が 0 になると、それらは配列から取り除かれます。配列の長さが 0 の場合、ゲームは次のレベルに進みます。なぜか最初の敵のHPが0になると、他の敵のHPもチェックせずに自動的に次のレベルに進んでしまう。最初のレベルでは敵が 1 人しかいませんでしたが、2 番目のレベルでは敵が 2 人います。次のレベルに進むには、2 番目の敵を倒し、次に最初の敵を倒す必要があります。最初の敵が配列の最初であることに関係があるのではないかと思います。敵が最初に倒された順序を無視するようにコードを変更する方法についてのアイデアはありますか?
public var enemy:Enemy = new Enemy();
public var enemy2:Enemy = new Enemy();
public var enemyArray:Array = [];
レベル タイマー (レベルを設定するタイマー、1 回実行):
if (level.levelNumber == 1)
{
enemyArray.push(enemy);
addChild(player);
addChild(enemy)
enemy.enemyMoveTimer.start();
enemy.enemyAttackTimer.start();
onGameTimer.start();
}
if (level.levelNumber == 2)
{
enemyArray.push(enemy, enemy2);
addChild(player);
addChild(enemy)
addChild(enemy2)
enemy.enemyMoveTimer.start();
enemy.enemyAttackTimer.start();
enemy2.enemyMoveTimer.start();
enemy2.enemyAttackTimer.start();
onGameTimer.start();
}
ゲームタイマー(敵の命をチェックし、走り続けるタイマー):
if (enemyArray.length == 0)
{
trace("NEXT LEVEL");
removeChild(player);//remove player from the current level
onLevelTimer.removeEventListener(TimerEvent.TIMER, timerLevel);
levelNumber += 1;
onLevelTimer.addEventListener(TimerEvent.TIMER, timerLevel);
onGameTimer.stop();
}
if (enemy.enemyHP <= 0)
{
enemy.enemyHP = 0;
enemy.enemyMoveTimer.stop();
enemy.enemyAttackTimer.stop();
trace("DEAD");
enemyArray.splice(0,1);
try
{
removeChild(enemy)
}
catch (e:ArgumentError){
}
}
if (enemy2.enemyHP <= 0)
{
enemy2.enemyHP = 0;
enemy2.enemyMoveTimer.stop();
enemy2.enemyAttackTimer.stop();
trace("DEAD");
enemyArray.splice(1,1);
try
{
removeChild(enemy2)
}
catch (e:ArgumentError) {
}
}