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

kyrpyr 23.01.2009 15:59

Рассылка событий
 
Вложений: 1
Всем привет.

Проблема в том, что не могу реализовать свое событие(
в аттаче приложены исходники примера

работать все должно так - класс Test в конструкторе подписывается на событие CustomEvent.MYEVENT с обработчиком myEventHandler и выполняет функцию TheOtherClass.doSmth(), откуда и рассылается событие. Хотелось бы, чтобы TheOtherClass не наследовал EventDispatcher, а создавал экземпляр EventDispatcher, с помощью которого и делал рассылку (если это возможно конечно).

Подскажите плз....или может ктонибудь исправит исходники и выложит работающий вариант?

Вложение 21384

r_r_f_r 24.01.2009 18:42

Примерно так

Код AS3:

package
{
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.events.IEventDispatcher;
 
        public class TheOtherClass implements IEventDispatcher
        {
                private var _eventDispatcher:EventDispatcher;
 
                public function OtherClassDis()
                {
                        _eventDispatcher = new EventDispatcher(this);
                }
 
                public function addEventListener(type:String,
                                                                                listener:Function,
                                                                                useCapture:Boolean = false,
                                                                                priority:int = 0,
                                                                                useWeakReference:Boolean = false):void
                {
                        _eventDispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
                }
 
                public function dispatchEvent(event:Event):Boolean
                {
                        return _eventDispatcher.dispatchEvent(event);
                }
 
                public function hasEventListener(type:String):Boolean
                {
                        return _eventDispatcher.hasEventListener(type);
                }
 
                public function removeEventListener(type:String,listener:Function,useCapture:Boolean = false):void
                {
                        _eventDispatcher.removeEventListener(type,listener,useCapture);
                }
 
                public function willTrigger(type:String):Boolean
                {
                        return _eventDispatcher.willTrigger(type);
                }
        }
}


BlooDHounD 24.01.2009 19:11

r_r_f_r, лучше в конструкторе сделать так:
Код AS3:

this._eventDispatcher = new EventDispatcher( this );

тогда в таргете событий будет экземпляр класса TheOtherClass.

r_r_f_r 24.01.2009 19:18

BlooDHounD, задремал малость:), спасибо. Код подправил.

kyrpyr 25.01.2009 00:16

а как рассылать тогда событие? так не работает
Код AS3:

_eventDispatcher.dispatchEvent(new CustomEvent(CustomEvent.MYEVENT));


BlooDHounD 25.01.2009 01:24

у меня работает.

kyrpyr 25.01.2009 03:10

Вложений: 1
странно все это....если не сложно, посмотри исходник, я уж прям и не знаю, в чем дело, всю голову поломал....
Вложение 21396

r_r_f_r 25.01.2009 10:59

Код AS1/AS2:

                public function Test() {
                        var to:TheOtherClass = new TheOtherClass();
                        to.addEventListener(CustomEvent.MYEVENT, myEventHandler);
                        to.doSmth()
                }
 
                private function myEventHandler(evt:CustomEvent):void {
                        trace("евент достиг цели!")
                }

Тебе нужно подписать именно объект to.

_Smirnoff 25.01.2009 12:38

kyrpyr, а зачем испльзовать композицию в TheOtherClass в отношении EventDispatcher. Или вы хотите TheOtherClass унаследоваь от другого класса.

kyrpyr 25.01.2009 14:58

Цитата:

Тебе нужно подписать именно объект to.
Точно, спасибо
Цитата:

kyrpyr, а зачем испльзовать композицию в TheOtherClass в отношении EventDispatcher. Или вы хотите TheOtherClass унаследоваь от другого класса.
именно так я и хотел сделать

с экземпляром класса все ясно, а как поступить, если функция doSmth статическая и вызывается соответственно от имени класса?


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

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