Показать сообщение отдельно
Старый 26.09.2010, 23:07
randomnoob вне форума Посмотреть профиль Отправить личное сообщение для randomnoob Найти все сообщения от randomnoob
  № 1  
Ответить с цитированием
randomnoob

Регистрация: Sep 2010
Сообщений: 42
По умолчанию Проблема с использованием removeChild()

Всем привет.
Ситуация такая. Есть некий объект на экране, при клике мышкой он выстреливает другой объект, который летит в сторону, куда указывал курсор в момент клика.
Через какое-то время таких "снарядов" становится очень много. Хотелось бы их убирать как только они улетают за определенные границы.

Создаю снаряд в обработчике события клика.
Код AS3:
private function handlerShipFire(event:MouseEvent):void{
var missile:Missile = new Missile(3, 0xff00000, ship.x, ship.y, mouseX, mouseY);
addChild(missile);
ammo.push(missile);
}
Затем в обработчике ENTER_FRAME обеспечиваю полет снарядам.
Код AS3:
for each(var missile:Missile in ammo){
missile.x += missile.directionX * missile.getMissileSpeed();
missile.y += missile.directionY * missile.getMissileSpeed();
}
Все работает нормально. Но если я вставляю проверку типа
Код AS3:
if(missile.x < -50 || missile.x > 500){ removeChild(missile); }
выдается ошибка ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.

Как вообще правильно убивать такие объекты, чтобы они спокойно удалялись и не висели в памяти?