Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему ADDED_TO_STAGE срабатывает дважды? (http://www.flasher.ru/forum/showthread.php?t=146241)

джонатан 01.11.2010 23:41

Почему ADDED_TO_STAGE срабатывает дважды?
 
И кроме этого ещё срабатывает REMOVED_FROM_STAGE

FLA файл, Document class M.as:

1)
Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.events.Event;
 
 
        public class M extends MovieClip {
 
 
                public function M() {
                        this.addEventListener( Event.ADDED_TO_STAGE, init );
                }
 
                private function init( e:Event ):void {
                        trace( "added" );
                }
 
 
        }
 
}

Выводит:

added
added

2)

Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.events.Event;
 
 
        public class M extends MovieClip {
 
 
                public function M() {
                        this.addEventListener( Event.ADDED_TO_STAGE, init );
                }
 
                private function init( e:Event ):void {
                        trace( "added" );
                        this.removeEventListener( Event.ADDED_TO_STAGE, init );
                        this.addEventListener(Event.REMOVED_FROM_STAGE, removed );
                }
 
                private function removed( e:Event ):void {
                        trace( "removed" );
                        this.removeEventListener( Event.REMOVED_FROM_STAGE, removed );
                }
 
        }
 
}

Выводит:

added
removed

Объясните пожалуйста, почему это происходит, и как этого избежать?
Всем спасибо.

-De- 02.11.2010 00:02

Кэп считает, что вы дважды добавляете M на сцену.

nOobCrafter 02.11.2010 00:33

Код AS3:

public class M extends MovieClip {
 
 
                public function M() {
                        this.addEventListener( Event.ADDED_TO_STAGE, init );
                }
 
                private function init( e:Event ):void {
                    this.removeEventListener( Event.ADDED_TO_STAGE, init );
                                trace( "added" );
                }
 
 
        }

избежать можно так.

cleptoman 02.11.2010 00:54

чего вы подписку то показываете..вы покажите где и как добавляете на сцену
nOobCrafter, это не избежать, а неотловить)

http://www.flasher.ru/forum/blog.php?b=195

джонатан 02.11.2010 01:10

cleptoman

FLA файл, Document class M.as

КорДум 02.11.2010 01:15

Цитата:

FLA файл, Document class M.as
__________________
Убейте меня!
Ага ;)

Просили показать код, как вы добавляете его на сцену.

джонатан 02.11.2010 22:45

Я понял, я не добавляю его на сцену, это главный класс документа, в пропертях указываю.


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

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