![]() |
Проблема с использованием removeChild()
Всем привет.
Ситуация такая. Есть некий объект на экране, при клике мышкой он выстреливает другой объект, который летит в сторону, куда указывал курсор в момент клика. Через какое-то время таких "снарядов" становится очень много. Хотелось бы их убирать как только они улетают за определенные границы. Создаю снаряд в обработчике события клика. Код AS3:
Код AS3:
Код AS3:
Как вообще правильно убивать такие объекты, чтобы они спокойно удалялись и не висели в памяти? |
Ну "правильнее" будет так:
Код AS3:
плюс у Вас в коде удаление из массива указано не было, а о нём также не нужно забывать ;) |
Заработало, спасибо.
А почему if (contains(missile)) исправило дело? Я почитал описание contains(), но немного не понял, что оно исправило конкретно в моем случае. Я так понимаю, что просто проверилось, присутствует ли данный объект на сцене? |
Да, именно так. Прежде чем удалять объект, надо проверить, есть ли он в том контейнере, из которого его удаляют. Иногда также следует сначала проверить, не содержит ли переменная-ссылка (здесь missile) null, иначе и проверка на contains вызовет ошибку))
|
Вы не удаляли пули из массива, таким образом пули пытались удалиться повторно при следующей проверке на выход из границ.
Добавлено через 2 минуты т.е. в принципе, если делать Код AS3:
Код AS3:
да, и обход лучше делать не по оригиналу массива, а по его копии Код AS3:
|
Цитата:
|
Нет, не так. Удаление объекта из контейнера вызовет ошибку, если в контейнере такого объекта нет. Отображается в данное время контейнер или нет - не играет роли. Главное - есть ли удаляяемый объект в контейнере.
|
| Часовой пояс GMT +4, время: 19:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.