1

有没有办法在某个类上调度事件(Action Script 3.0),每个对象女巫都在该类中并且指定的侦听器函数可以捕获该事件?. 例如我有这样的结构:

编辑(更新类):

class example extends EventDispatcher {
object1 = {subObject1 = {anotherObject1, anotherObbject2}, subObject2}
object2 = {subObject3}
object3

...
}

我希望其中一些有事件监听器:

anotherObject1.addEventListener(MyEvent.PART3D_CHANGED, function (e: MyEvent){/*do something*/);
anotherObbject2.addEventListener(MyEvent.PART3D_CHANGED, function (e: MyEvent){/*do something*/);
object3.addEventListener(MyEvent.PART3D_CHANGED, function (e: MyEvent){/*do something*/);

编辑:然后我想在这个类中调度事件,并且每个对象都有侦听器处理事件,如下所示:

this.dispatchEvent(new MyEvent(MyEvent.PART3D_CHANGED))

就像您看到的那样,我需要调度一种类型的事件,并且不需要对每个对象都执行此操作。

根据我的研究,我发现我需要在每个对象上分派 Event,但是如果我必须为每个带有需要侦听器的单个对象和另一个用于循环每个对象的子对象的选项和另一个选项分派,那么代码将是不整洁的。如果需要监听器,则随意添加监听器将没有成本效益。ps对不起我的英语:-)

4

1 回答 1

0

我认为在事件模型中这种行为没有标准方法:http: //livedocs.adobe.com/flex/3/html/help.html?content= events_08.html

有捕获阶段(与冒泡相反),但它仍然发生在祖先身上(只是顺序不同)。事件冒泡的主要动机是支持鼠标事件的特殊性质,而不是传递一般事件。当您单击某物时,您会同时单击按钮和舞台(因此两者都有处理它的自然权利)。

您的孩子可以直接订阅父类吗?例如,如果对象对全局鼠标移动感兴趣,则执行以下操作并不少见:

stage.addEventListener(MouseEvent.MOUSE_MOVE, watchMouse);

同样,您的 anotherObject 可以执行以下操作:

myBigMainParent.addEventListener(MyEvent.MY_EVENT, anotherObjectLocalHandler);

IMO,这将非常干净:事件发生在一个特定点,但任何地方的任何人都可以订阅它。

于 2013-03-19T21:49:22.697 回答