PDA

Просмотр полной версии : Обработка классом одноименных событий рассылемых через EventDispatcher


: hr :
24.10.2007, 19:16
Друзья, глупый вопрос :) Класс подписан на обработку событий от различных объектов, рассылающих _одноименные_ события. Т.е., к примеру, так:

object1.addEventListener("onLoadProgress", this);
object2.addEventListener("onLoadProgress", this);

Вопрос - как грамотно отличать эти одноименные события и соответственно их обрабатывать (по разному)? Через свойство eventObj.target? ...или для каждого вещателя создавать подкласс Event и соответственно отслеживать тип пришедшего eventObj? Так?

Kikasso
24.10.2007, 19:21
можно подписывать прямо функцию, не обязательно объект
object1.addEventListener("onLoadProgress", method1 );
object2.addEventListener("onLoadProgress", method2 );

Чтобы не потерялась область видимости, есть Delegate

7thsky™
27.10.2007, 16:09
Зачем? у каждого евента есть свойство, target - (указывающее (как правило) на объект генерирующий событие)


btn1.addEventListener ('click', this);
btn2.addEventListener ('click', this);

function click (evt:Object):Void {
if (evt.target == btn1) {
} else if (evt.target == btn2) {
}// end if
}

screamge
27.10.2007, 16:42
Можно и так позапутанее, как вариант:

ClassDispatcher:

public static var CLICKED:String = 'clicked';

dispatchEvent (CLICKED);


ClassListener:

import some.ClassDispatcher;

private var to_listen:ClassDispatcher
to_listen = new ClassDispatcher;
to_listen.addEventListener (ClassDispatcher.CLICKED, clickedHandler)