Форум 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=130094)

Vogd 17.09.2009 16:54

Самоудаляющиеся клипы
 
Когда я писал на As2 я делал разные эффектики отдельными клипами, где в последнем кадре анимации писал

Код AS1/AS2:

this.removeMovieClip();

И когда нужно просто создавал нужный клип в нужном месте и забывал про него.

Теперь на AS3 пробую в последнем кадре писать

Код AS3:

parent.removeChild(this);

И клип на самом деле удаляется со сцены, но в лог пишется

Код AS3:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at Object2/frame10()

Мне не хочется для каждого эффекта создавать свой as файл. Можно ли из кадра корректно удалить самого себя?

Спасибо.

marat_sa 17.09.2009 17:22

Перед такими "штуками" убедитесь, что на него не осталось листенеров и ссылок, по которым к нему можно было бы обратиться.
Еще попробуйте проверку ввести:
Код AS3:

if (parent)
    parent.removeChild(this);


Vogd 17.09.2009 17:36

Спасибо!

Код AS3:

if (parent)
    parent.removeChild(this);

сработало, так же как сработало и

Код AS3:

parent.removeChild(this);
stop();

почему код этого кадра выполнялся дважды я не понял:(

MoHaX 17.09.2009 17:44

Мувиклип будет существовать в памяти еще долго, пока сборщик мусора его не удалит (в случае если на него не будет ссылок).
Так что лучше сделать.
Код AS3:

//Останавливаем
stop();
//Проверяем есть ли родитель (добавлен ли клип куданибудь).
if (parent){
    //Просим родителя удалить нас.
    parent.removeChild(this);
}


Vogd 17.09.2009 17:53

Ах вот оно почему! Ясно, спасибо.


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

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