Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Dispatch события без расширения EventDispatcher (http://www.flasher.ru/forum/showthread.php?t=148582)

kotbuterbrod 06.01.2011 05:20

Dispatch события без расширения EventDispatcher
 
Сабж.

tsarapkabel 06.01.2011 05:33

Может?
Цитата:

Сообщение от Colin Moock
Если вы хотите сделать получателем события экземпляр класса, который уже расширяет другой класс, используйте композиционный подход...: непосредственно реализуйте интерфейс IEventDispatcher и используйте методы класса EventDispatcher не через наследование, а через композицию.


kotbuterbrod 06.01.2011 05:34

Я читал Мука...

TanaTiX 06.01.2011 05:39

Каким образом вы собираетесь отсылать сообщения, не имея для этого инструментов? Вы же не можете отображать на сцене булевую переменную, она не является DisplayObject.Так и тут, чтоб иметь возможность отсылать сообщения нужна реализаци IEventDispatcher

kotbuterbrod 06.01.2011 05:48

Код:

В классе Main

Код AS3:

public static var evt: EventDispatcher = new EventDispatcher();

При обработке события в MainClass

Делаю диспатч.

Код AS3:

evt.dispatchEvent(new Event('test event');

В классе Second.

Код AS3:

Main.evt.addEventListener('test event', onTestClicked, true,0,true);

Ну дальше идет соответственно функция onTestClicked, в которой делается трейс.

Добавлено через 3 минуты
Так вот трейс, не проходит....

TanaTiX 06.01.2011 05:58

И не должен.
У вас Main статический класс? Надеюсь что и не будет.
Не нужно диспатчить в событие, диспатчите в тот объект, который может обработать сообщение
Ваш мэин:
Код AS3:

import flash.event.Event;
...
var snd:MySound=new MySound();
snd.dispatchEvent(new Event("MyEvent"));

Ваш саунд:
Код AS3:

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

Цитата:

Код AS3:

Main.evt.addEventListener('test event', onTestClicked, true,0,true);


первый параметр true говорит о том, что мы хотим отловить событие на фазе перехвата, т.е. либо событие должно быть всплывающим и ловить его мы должны в родительском отображаемом объекте, либо (в данном случае подходит только этот вариант) добавлять обработчик с useCapture=false

Код AS3:

Main.evt.addEventListener('test event', onTestClicked, false, 0, true);


dimarik 06.01.2011 13:01

kotbuterbrod, Вы читали Мука по диагонали. Перечитайте о событийной модели вдумчиво.

Psycho Tiger 06.01.2011 17:12

Я один не понимаю причем здесь статикики и почему реализация IEventDispatcher не подходит?


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

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