У меня есть пара утверждений if в функции таймера, проверяя, является ли hp врага 0. Враги добавляются в массив. Когда один враг hp достигает 0, они берутся из массива и удаляются. Когда длина массива равна 0, игра переходит на следующий уровень. По какой-то причине, когда hp первого врага достигает 0, он автоматически переходит на следующий уровень, даже не проверяя hp другого врага. Он работал на первом уровне, где у меня было только 1 враг, но на втором уровне у меня есть два врага. Я должен был бы победить второго врага, а затем первым, чтобы он перешел на следующий уровень. Я думаю, что это может иметь какое-то отношение к тому, что первый враг является первым в массиве. Любые идеи о том, как я могу изменить код, чтобы игнорировать порядок поражения противника?Проблема с порядком массива
public var enemy:Enemy = new Enemy();
public var enemy2:Enemy = new Enemy();
public var enemyArray:Array = [];
Level Timer (Таймер, который устанавливает уровень, выполняется один раз):
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) {
}
}
Это еще проблема, или проблема решена? – Atriace