четверг, февраля 28, 2008

Про EventDispatcher. AS2

Повторение - мать учения.

Как использовать EventDispatcher:

Класс объекта, посылающего события:


Класс объекта, принимающего события:


ВАЖНО: Если объект Sender является MovieClip-ом, то в приведенном выше коде событие не отрабатывается. Для того, чтобы событие сработало, необходимо подписываться на него(вызывать addEventListener) не из конструктора! а из обработчика onLoad().

* * *

ОБНОВЛЕНИЕ: Добавление обработчика с использованием Delegate усложняет его удаление всвязи с тем, что при делегировании возвращается новая функция обработчика (см. комментарии). Для отписывания можно просто запомнить новый обработчик в переменную и потом ее использовать для отписывания:
sender.addEventListener(EVENT_TYPE,this.__event_handler=Delegate.create(this,this.onEventType1));
sender.removeEventListener(EVENT_TYPE,this.__event_handler);

В коде приведен универсальный метод подписывания на прослушивание и отписывания от событий.

Да, чуть не забыл. Для тестирования в таймлайне нужно написать:
this.reciever=new Receiver();
this.reciever.testDispatch();

2 комментария:

alexander nemtsov комментирует...

this.__sender.addEventListener(Sender.EVENT_TYPE,Delegate.create(this,this.onEventType));

ога... а теперь яви чудо изобретательности и отпишись от этого события :)

Unknown комментирует...

Супер, спасибо за наводку.
Обновляю выше приведенный код.