Ошибка аргумента № 2025:
Предоставленный DisplayObject не является дочерним элементом вызывающего объекта
В моей программе у меня есть структура объектов отображения, представляющих вражеские юниты на экране, расположенных следующим образом:
0: "enemy handler" ➔ [object EnemyHandler]
0: "enemy" ➔ [object Enemy1]
0: "enemy's skin"(MovieClip) ➔ [object EnemySkin1]
0: "skin image" ➔ [object Shape]
Класс документа содержит один экземпляр EnemyHandler, а также несколько экземпляров Enemy1, Enemy2 и т. д.. К каждому из них прикреплен мувиклип скина. .
Класс Enemy (от которого наследуется Enemy1/2/3 ect) содержит свойство expired, для которого устанавливается значение true внутри класса Enemy (enemy.update), когда враг достигает определенного точка.
В классе обработчика врага есть функция, в которой и заключается проблема, которая перебирает массив всех экранных объектов Enememy, обновляя их позицию, а затем,
if(tempEnemy.expired)
{
tempEnemy.destroy(); // removeChild(skin)
enemyList.splice(tempEnemy);
removeChild(tempEnemy)
}
при запуске, если все враги достигают конечной точки в том порядке, в котором они были созданы, проблем нет, однако, если, например, один из них движется быстрее и достигает конечной точки раньше, возникает ошибка # 2025 (предоставленный DisplayObject является не является дочерним элементом вызывающего абонента).
Я сузил его до того, что программа пытается удалить врага дважды по причинам, которые я не могу понять. Он зацикливается и удаляет нужных врагов, а затем пытается удалить их снова, даже если они объединены с массивом (что происходит правильно, и первая попытка removeChild всегда успешна)
Это, вероятно, что-то довольно простое от моего имени, так что простите меня, но любая помощь приветствуется. вот файлы;
[код на рамке] pastebin.com/vcXzQpr9
[Враг.as] pastebin.com/RNXgK8Ex
[EnemyHandler.as] pastebin.com/6fytxbMW
[Enemy0.as] и [Enemy1.as] pastebin.com/5bW3Aa0H
[Utils.as] pastebin.com/PQ2LPV0v
[traceDl.as] {отладка списка отображения} pastebin.com/9vQGKcYP