![]() |
this=null?
Мне нужно, чтобы объект удалил сам себя. Можно ли написать this=null, или есть другие, более подходящие способы.
|
StasMIX
Обнулить все таймеры и ентер фрейми в себе. Удалить все ссылки на себя, в том числе из дисплей обжекта. После этого ваш объект сожрет GC. |
Сам себя объект удалить не может.
|
Код AS3:
|
так делать не стоит
|
scarm, так вы только удалите себя из списка отображения и только(в частных случаях этого может хватить) и то, можно, как мимимум, пару рте словить. объект должен удалять тот, кто его создал. Обычно делают метод например destroy или free в к. отписываются от всех событий, освобождают все ресурсы к. могут, в том числе и у дочерних объектов, и зануляют все ссылки. Ну и занулить все внешние ссылки на этот объект и отписаться от событий этого объекта.
|
СлаваRa
Да действительно, получается такая каша. |
Присвоение полю null как-бы значит только то что на объект сатало ссылаться на одну ссылку меньше. Он как в куче лежал, так и будет продолжать лежать (или в системе пулов, не помню, что там у флешплеера).
|
Ну в идеале это надо делать примерно так:
1. Удалить внутри объекта все подписки на таймеры, ентерфреймы и прочую муть(желательно рекурсивно, чтоб и в детях это всё тоже очистилось) 2. продиспатчить наверх событие "удали меня" 3. сверху кто-то получит событие и удалит этот объект со сцены. |
Dukobpa3, если уж быть совсем последовательным, то:
1. Сверху вызывается публичный destroy(), в котором мы производим операции из п.1 твоей схемы 2. Сверху же следом отписываемся от событий (если были подписчики) и удаляем со сцены. |
| Часовой пояс GMT +4, время: 01:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.