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

Lyso 02.06.2011 22:40

Опять ошибка:

ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
at flash.display::DisplayObjectContainer/removeChild()
at RandCircle/onRemoveChild()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at Circle/onTimer()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

КорДум 02.06.2011 22:41

Код AS3:

private function onTimer(e:TimerEvent):void{
        this.alpha -= 0.1;
        dispatchEvent(REMOVE_ME);
}

А тут вывалит RTE. Нужно прибивать таймер и все слушатели.
А не, не вывалит.

Lyso 02.06.2011 22:41

P.S Мне уже стыдно.

Добавлено через 2 минуты
Остановил таймер и удалил прослушиватель событий, все работает, но слишком быстро, но эт оя уже сам исправлю. Большое спасибо!

КорДум 02.06.2011 22:45

Давайте вопросы, пока тема свежа. Что непонятно из того, что мы сделали?

Lyso 02.06.2011 22:47

Я быстро пробегал по событиям. Тут я все понял. Про класс с событиями слегка понятно, про super() смутило, но тут наследие.

Удаление таймера и прослушивателя я понял. Только теперь у меня не работает условие прозрачности для удаления.
Код AS3:

private function onTimer(e:TimerEvent):void{
                        this.alpha -= 0.1;
                        timer.stop();
                        timer.removeEventListener(TimerEvent.TIMER,onTimer);
                        if(this.alpha<=0.1){
                                dispatchEvent(new MyEvent(MyEvent.REMOVE_ME));
                        }
                }

Все фигуры почти прекращают исчезать и начинает все жутко лагать...

FUCK... Понял..

Добавлено через 1 минуту
Код AS3:

private function onTimer(e:TimerEvent):void{
                        this.alpha -= 0.1;
                        if(this.alpha<=0.1){
                                timer.stop();
                                timer.removeEventListener(TimerEvent.TIMER,onTimer);
                                dispatchEvent(new MyEvent(MyEvent.REMOVE_ME));
                        }
                }


КорДум 02.06.2011 22:49

Код AS3:

private function onTimer(e:TimerEvent):void{
        this.alpha -= 0.1;
        if (this.alpha <= 0.1) {
                dispatchEvent(new MyEvent(MyEvent.REMOVE_ME));
                timer.removeEventListener(TimerEvent.TIMER,onTimer);
                timer.stop();
        }
}


Lyso 02.06.2011 22:49

Что такое RTE?
"А тут вывалит RTE."

КорДум 02.06.2011 22:50

RunTime Error

Lyso 02.06.2011 22:52

C этим знаком.
Тогда вопросов по самому принципу создания нет. Вопрос об оптимизации. Тут сильно плохо в этом плане?

КорДум 02.06.2011 22:53

Если делать так, как я давал выше — со всеми отписками от событий и отключениями висячих таймеров, — то ничего страшного не должно произойти.


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

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