Просмотр полной версии : Dispatch события без расширения EventDispatcher
kotbuterbrod
06.01.2011, 05:20
Сабж.
tsarapkabel
06.01.2011, 05:33
Может?
Если вы хотите сделать получателем события экземпляр класса, который уже расширяет другой класс, используйте композиционный подход...: непосредственно реализуйте интерфейс IEventDispatcher и используйте методы класса EventDispatcher не через наследование, а через композицию.
kotbuterbrod
06.01.2011, 05:34
Я читал Мука...
Каким образом вы собираетесь отсылать сообщения, не имея для этого инструментов? Вы же не можете отображать на сцене булевую переменную, она не является DisplayObject.Так и тут, чтоб иметь возможность отсылать сообщения нужна реализаци IEventDispatcher
kotbuterbrod
06.01.2011, 05:48
Код:
В классе Main
public static var evt: EventDispatcher = new EventDispatcher();
При обработке события в MainClass
Делаю диспатч.
evt.dispatchEvent(new Event('test event');
В классе Second.
Main.evt.addEventListener('test event', onTestClicked, true,0,true);
Ну дальше идет соответственно функция onTestClicked, в которой делается трейс.
Добавлено через 3 минуты
Так вот трейс, не проходит....
И не должен.
У вас Main статический класс? Надеюсь что и не будет.
Не нужно диспатчить в событие, диспатчите в тот объект, который может обработать сообщение
Ваш мэин:
import flash.event.Event;
...
var snd:MySound=new MySound();
snd.dispatchEvent(new Event("MyEvent"));
Ваш саунд:
import flash.event.Event;
...
addEventListener("MyEvent", onEvent, false, 0, true);
...
private function onEvent(e:Event):void{
trace("handler my event");
}
kotbuterbrod
06.01.2011, 06:08
О наиумнейший TanaTiX, преклоняюсь перед перед твоим AS3 могуществом, и прошу адрес для отсылки пива. СПАСИБО ОГРОМНОЕ !!!
f.g.programmer
06.01.2011, 12:26
Main.evt.addEventListener('test event', onTestClicked, true,0,true);
первый параметр true говорит о том, что мы хотим отловить событие на фазе перехвата, т.е. либо событие должно быть всплывающим и ловить его мы должны в родительском отображаемом объекте, либо (в данном случае подходит только этот вариант) добавлять обработчик с useCapture=false
Main.evt.addEventListener('test event', onTestClicked, false, 0, true);
kotbuterbrod, Вы читали Мука по диагонали. Перечитайте о событийной модели вдумчиво.
Psycho Tiger
06.01.2011, 17:12
Я один не понимаю причем здесь статикики и почему реализация IEventDispatcher не подходит?
Я один не понимаю причем здесь статикики и почему реализация IEventDispatcher не подходит?
не один.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.