Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   уничтожения класса (http://www.flasher.ru/forum/showthread.php?t=119531)

Ar4ibald 23.12.2008 13:37

уничтожения класса
 
Здравствуйте, создаю класс, он у меня тип - MovieClip и добавляю в определенный мувик. У меня задача удалить все с этого мувика и класс включительно.
Пробовал таким способом
Код AS3:

var mc = this.parent.getChildByName("nov_mc");
while(mc.numChildren) mc.removeChildAt(0);

После этой процедуры с мувика все исчезает, но класс продолжает работать (видно через trace и некоторые сообщения ).
Как его убрать вообще или остановить?
Спасибо за помощь?

Chas 23.12.2008 13:51

остановить таймеры, отписать от событий, занулить все внешние ссылки на него.

Ar4ibald 23.12.2008 13:57

создаю таким образом
Код AS3:

var gallery_mc1:MovieClip = new Gallery1();
mc.addChild(gallery_mc1);

больше я к этому классу никак не обращаюсь, в событиях он не учавствует. У него есть свои функции конечно, но при удалении с мувика они не прекращают работать.
удаляю ведь с мувика все мувиклипы!

Chas 23.12.2008 14:10

если на события вы его не подписываете, то какие трейсы и сообщения тогда видите, свидетельствующие о его работе? Подписан он на события значит или взаимодейсвует с другим мувиком. Или у вас на таймлайне код находится(что плохой стиль для AS3) и вы забыли сделать stop ролику(хотя странно, всегда считал, что после removeChild ролик стопится автоматом).
В любом случае, других вариантов, кроме тех, что я описал - нет, так что ищите ОШИБКУ.

Ar4ibald 23.12.2008 15:20

у меня он написан на Papervision, а он сам выдает некоторые сообщения даже без трейса. У меня картинка двигаеться в зависимости от положения мыши, но когда я удаляю этот класс, то события продолжаються и выдают ошибку ибо мувика уже нет на сцене. Но чтот тогда получаеться - я перед удалением мувика должен выключить все события в классе? Но это же дико не удобно. Я думал, что при удалении класса, удаление его слушателей подразумеваеться само собой.

Molecula 23.12.2008 15:26

Нет. Лично я при удалении Класса, наследуемого от Паперовских хреней, запускаю в нём функции самоудаление:
1) Удаляю онЕнтерфреймы и тому подобные;
2) Очищаю массивы, битмапдаты;
3) Всякие Евен.*;
4) Удаляю всякую мелкотню там.

Т.е. это выглядит где-то так:
Код AS3:

this.gallery_mc1 = new Gallery1();
this.mc.addChild(this.gallery_mc1);
...
this.gallery_mc1.destroyItSelf();
this.mc.removeChild(this.gallery_mc1);
this.gallery_mc1 = null;


Ar4ibald 23.12.2008 15:29

Код AS3:

destroyItSelf();

я так полагаю это ваша функция, которая удаляет все события и все остальное.

Спасибо.Бум пробовать

Molecula 23.12.2008 15:30

Да, можно назвать её как Вам угодно.


Часовой пояс GMT +4, время: 13:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.