|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1.3 07.12.11]
Регистрация: Feb 2011
Сообщений: 121
|
Обмен между классом-диспетчером и основным классом
Всем привет!
Есть основной класс программы и есть класс-диспетчер. Прослушиваю в основном классе события диспетчера. В диспетчере генерирую событие, а основной класс не отлавливает. В чем ошибка? Класс-диспетчер объявлен как final и расширяет EventDispatcher. /* Основной класс */ private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point addEventListener(myDispatcher.START_PRELOADER, startPreloader); } private function startPreloader(e:Event):void { trace("Старт прелоадер"); dispatchEvent(new Event(myDispatcher.COMPLETE_PRELOADER)); } /* Класс-диспетчер */ dispatchEvent(new Event(myDispatcher.START_PRELOADER)); |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Проблема в том, что слушатель добавлен к объекту основного класса, а доставляет события объект "диспетчер". Естественно основной класс и не должен ничего отлавливать.
Если в нем создать экземпляр диспетчера, и добавить слушатель к этому экземпляру, тогда он и будет ловить эти события |
|
|||||
[+1.3 07.12.11]
Регистрация: Feb 2011
Сообщений: 121
|
ой... ))... точно... спасибо... заработало...
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Добавлено через 5 минут Хотя извиняюсь, к данному случаю это, похоже, не относится)
__________________
Reality.getBounds(this); |
|
|||||
[+1.3 07.12.11]
Регистрация: Feb 2011
Сообщений: 121
|
Цитата:
Еще раз извиняюсь за нубизм вселенского масштаба. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну у конструктора EventDispatcher есть единственный параметр target, по-умолчанию null.
Если в этот параметр передать ссылку на экземпляр класса, реализующего интерфейс IEventDispatcher, то можно использовать этот экземпляр (класса, который может НЕ НАСЛЕДОВАТЬ класс EventDispatcher) так, как будто он чистокровный EventDispatcher. Эта возможность добавлена для того, что далеко не всегда пользовательский класс можно унаследовать от EventDispatcher, наследование-то в AS3 не множественное)). package { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IEventDispatcher; /* * * * * * * * * * * * * @author wolsh * * * \* * * * * * * * * */ public class NotDispatcher implements IEventDispatcher { private var _dispatcher:EventDispatcher; public static const MESSAGE_EVENT:String = "I am not dispatcher, but i can!"; public function NotDispatcher() { _dispatcher = new EventDispatcher(this); } public function talk():void { _dispatcher.dispatchEvent(new Event(MESSAGE_EVENT)); } /* INTERFACE flash.events.IEventDispatcher */ public function dispatchEvent(event:Event):Boolean { trace("Тут кто-кто попросил продиспатчить сообщение:", event.type, "но я его не знаю"); return false; } public function hasEventListener(type:String):Boolean { return _dispatcher.hasEventListener(type); } public function willTrigger(type:String):Boolean { return _dispatcher.willTrigger(type); } public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { _dispatcher.removeEventListener(type, listener, useCapture); } public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); } } } // entry point var nd:NotDispatcher = new NotDispatcher(); nd.addEventListener(NotDispatcher.MESSAGE_EVENT, handlerNDMessage); nd.talk(); nd.dispatchEvent(new Event("Oops...")); .... private function handlerNDMessage(event:Event):void { trace(event.target, "say:", event.type); } Вот как-то так...
__________________
Reality.getBounds(this); Последний раз редактировалось iNils; 08.11.2011 в 22:42. |
Часовой пояс GMT +4, время: 14:12. |
|
« Предыдущая тема | Следующая тема » |
|
|