![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2009
Сообщений: 39
|
Здравствуйте, возникает проблема при удалении объекта со сцены: после удаления его со сцены, на выводе получаю [object Boss], а не null, то есть объект остается на сцене, просто становится невидимым. Помогите пожалуйста разобраться.
Создание объекта: boss=new Boss(); boss.x=stage.stageWidth/2; boss.y=boss.height/2+stage.stageHeight/30; stage.addChild(boss); Последний раз редактировалось FX2000; 07.11.2009 в 18:36. |
|
|||||
|
Регистрация: Oct 2009
Адрес: г. Казань
Сообщений: 82
|
Объект остается живым. Удаление со сцены, не убивает его. Ведь вам может понадобиться показать его еще раз. Чтобы убить объект (ссылку на него) присвойте ему null.
__________________
AS3Coding: ActionScript 3.0, FlashDevelop, ... |
|
|||||
|
Цитата:
Объект - это объект, то есть участок в памяти. А переменная - это ссылка, позволяющая нам к этому участку обратиться. Ссыслку мы обнулить можем - тогда флеш не будет видеть возможности обратиться к объекту (участку памяти) и участок будет очищен. А зачем, спрашивается, содерать данные, если использовать их все-равно не получится? (если ссылок на объект нет) А вот сам объект обнулить напрямую - на это есть другие механизмы (GarbageCollector), которые в общем случае вручную не вызываются Чтобы было понятно - для данного случая: - создается объект класса Boss - создается объект класса Boss и переменная boss становится ссылкой на него. - объект, на который ссылается переменная boss, заносится в список отображения. С момента занесения объекта в список отображения, на него, фактически, имеется 2 ссылки: переменная boss (оно и понятно) и индекс в списке отображения ( то есть мы можем обратиться к объекту двумя путями - через boss и через getChildAt()) Что происходит когда Вы удаляете объект со сцены? - одна из ссылок (та которая getChildAt()) на объект перестает работать. Однако, вторая ссылка (которая boss) как работала, так и работает. По этому объект продолжает существовать
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 07.11.2009 в 19:36. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 39
|
AS3Coderспасибо, помогло.
gloomyBrain круто вы расписали, спсибо ![]() То есть объект так просто удалить нельзя, а можно удалить ссылку, которая обращается к элементу, а потом свою работу сделает GarbageCollector? А если мне нужно будет опять создать этот объект, нужно будет делать так как я делал или как-то иначе? |
|
|||||
|
Регистрация: Oct 2009
Адрес: г. Казань
Сообщений: 82
|
gloomyBrain Можно узнать про GarbageCollector, по-подробнее, хотя-бы ссылку
__________________
AS3Coding: ActionScript 3.0, FlashDevelop, ... |
|
|||||
|
Вы не можете "опять создать этот объект".
Вы можете создать новый объект того же класса. То есть не этот объект, а другой такой же как этот. А затем уже присвоить ссылку. Чтобы было проще понять - представьте, что Ваш код выполняется справа налево: Итак, справа налево, поехали: 1) new Boss() - "создать объект класса Boss" 2) boss = - "присвоить переменной boss значение" UPD: 2 AS3Coder ссылка про GarbageCollector
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 07.11.2009 в 21:17. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 39
|
Спасибо за помощь, разобрался.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|