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

dedsky 09.03.2010 14:23

не происходит диспетчеризация своего события
 
Вложений: 1
В одном классе происходит диспетчеризация двух пользовательских событий. Одно событие - в простой функции (которая вызывается конструктором), другое - в обработчике стандартного события MouseEvent. Так вот, то событие, которое регистрируется в функции, не работает. В чем может быть загвоздка?

В прикреплении сам проект.

etc 09.03.2010 14:47

Во-первых, вы не там подписываетесь (это в случае COMPLETE), а во-вторых поздно (это в случае INIT). Посылать событие в конструкторе некому, на него никто не может быть подписан.

dedsky 09.03.2010 14:57

На оба события подписан экземпляр класса Game.

Wolsh 09.03.2010 15:37

Ну во-первых нет, не Game.
Во-вторых - событие Game.STARTLEVEL диспатчится ДО того, как Вы сможете на него подписаться, а именно - сразу как только Вы создали экземпляр Game.
Как вариант - сделайте в классе Game вызов init() при наступлении события ADDED_TO_STAGE, а в классе документа подписку на Game.STARTLEVEL - до команды addChild(gameScreen);

dimarik 10.03.2010 01:15

Смотрите сами. Ваш codeflow
DocumentClass
Код AS3:

gameScreen = new Game(this, level);

Game
Код AS3:

dispatchEvent(new Event(Game.STARTLEVEL));

DocumentClass
Код AS3:

gameScreen.addEventListener(Game.STARTLEVEL, startLevelListener);

Тут даже рассуждать не о чём. Событие было распространено, но слушателя не было. Типа мёд пиво пил, по усам текло, а в рот не попало.
Слушатель появился позже рассылки события (А! Что! Я свидетель!).

Гы. Господин etc еще о событиях INIT и COMPLETE упоминал. Мне лень, проверьте сами.


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

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