Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   this=null? (http://www.flasher.ru/forum/showthread.php?t=173942)

StasMIX 14.01.2012 15:43

this=null?
 
Мне нужно, чтобы объект удалил сам себя. Можно ли написать this=null, или есть другие, более подходящие способы.

Tails 14.01.2012 15:48

StasMIX
Обнулить все таймеры и ентер фрейми в себе. Удалить все ссылки на себя, в том числе из дисплей обжекта. После этого ваш объект сожрет GC.

etc 14.01.2012 16:33

Сам себя объект удалить не может.

scarm 14.01.2012 17:15

Код AS3:

this.parent.removeChild(this);

Не?

СлаваRa 14.01.2012 17:29

так делать не стоит

Inet_PC 14.01.2012 17:36

scarm, так вы только удалите себя из списка отображения и только(в частных случаях этого может хватить) и то, можно, как мимимум, пару рте словить. объект должен удалять тот, кто его создал. Обычно делают метод например destroy или free в к. отписываются от всех событий, освобождают все ресурсы к. могут, в том числе и у дочерних объектов, и зануляют все ссылки. Ну и занулить все внешние ссылки на этот объект и отписаться от событий этого объекта.

Tails 14.01.2012 17:38

СлаваRa
Да действительно, получается такая каша.

expl 14.01.2012 18:20

Присвоение полю null как-бы значит только то что на объект сатало ссылаться на одну ссылку меньше. Он как в куче лежал, так и будет продолжать лежать (или в системе пулов, не помню, что там у флешплеера).

Dukobpa3 14.01.2012 18:36

Ну в идеале это надо делать примерно так:

1. Удалить внутри объекта все подписки на таймеры, ентерфреймы и прочую муть(желательно рекурсивно, чтоб и в детях это всё тоже очистилось)
2. продиспатчить наверх событие "удали меня"
3. сверху кто-то получит событие и удалит этот объект со сцены.

Zebestov 14.01.2012 18:41

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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.