![]() |
Удалением объекта со сцены
Здравствуйте, возникает проблема при удалении объекта со сцены: после удаления его со сцены, на выводе получаю [object Boss], а не null, то есть объект остается на сцене, просто становится невидимым. Помогите пожалуйста разобраться.
Создание объекта: Код AS3:
Код AS3:
|
Объект остается живым. Удаление со сцены, не убивает его. Ведь вам может понадобиться показать его еще раз. Чтобы убить объект (ссылку на него) присвойте ему null.
|
Цитата:
Объект - это объект, то есть участок в памяти. А переменная - это ссылка, позволяющая нам к этому участку обратиться. Ссыслку мы обнулить можем - тогда флеш не будет видеть возможности обратиться к объекту (участку памяти) и участок будет очищен. А зачем, спрашивается, содерать данные, если использовать их все-равно не получится? (если ссылок на объект нет) А вот сам объект обнулить напрямую - на это есть другие механизмы (GarbageCollector), которые в общем случае вручную не вызываются Чтобы было понятно - для данного случая: Код AS3:
Код AS3:
Код AS3:
С момента занесения объекта в список отображения, на него, фактически, имеется 2 ссылки: переменная boss (оно и понятно) и индекс в списке отображения ( то есть мы можем обратиться к объекту двумя путями - через boss и через getChildAt()) Что происходит когда Вы удаляете объект со сцены? - одна из ссылок (та которая getChildAt()) на объект перестает работать. Однако, вторая ссылка (которая boss) как работала, так и работает. По этому объект продолжает существовать |
AS3Coderспасибо, помогло.
gloomyBrain круто вы расписали, спсибо :) То есть объект так просто удалить нельзя, а можно удалить ссылку, которая обращается к элементу, а потом свою работу сделает GarbageCollector? А если мне нужно будет опять создать этот объект, нужно будет делать так как я делал или как-то иначе? |
gloomyBrain Можно узнать про GarbageCollector, по-подробнее, хотя-бы ссылку
|
Вы не можете "опять создать этот объект".
Вы можете создать новый объект того же класса. То есть не этот объект, а другой такой же как этот. А затем уже присвоить ссылку. Чтобы было проще понять - представьте, что Ваш код выполняется справа налево: Код AS3:
1) new Boss() - "создать объект класса Boss" 2) boss = - "присвоить переменной boss значение" UPD: 2 AS3Coder ссылка про GarbageCollector |
Спасибо за помощь, разобрался.
|
| Часовой пояс GMT +4, время: 15:23. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.