如何从创建的类中调度自定义事件?

时间:2010-01-02 03:41:09

标签: flex flash actionscript-3 event-handling

我有<mx:Application>,其中包含<mx:Module>。该模块有几个子模块。它还有一些我创建的类的实例。我正在尝试让这个类的方法调度一个可以被模块“听到”并处理的事件。这种情况没有发生。

有什么想法吗?

更清楚一点,我在类方法中使用'dispatchEvent'。这个类的实例有:mx.core.Application.myapplication.mymodule.myclass

调度事件的是“myclass.somefunction”。我有一个在'mymodule'中注册的监听器。但是,当函数/方法运行时没有任何反应。

1 个答案:

答案 0 :(得分:2)

如果您的类是显示对象,则需要将事件设置为“冒泡”显示链并在应用程序或模块类中进行侦听。事件不是应用程序范围,除非您使用某种单例或(如PureMVC)Facade来“抓取”所有事件并根据这些事件执行操作。因此,当您创建要分派的新事件时:

//Event(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
var event:Event = new Event("custom_event_name", true);
dispatchEvent(event);

在你的应用程序中,你会听它,因为Application类基本上是 swf的根目录。

addEventListener(“custom_event_name”,customEventHandler);

然后,customEventHandler可以调用模块中的函数。

如果从类中派遣并且该类不是显示对象,则可以向类的实例(mx.core.Application.myapplication.mymodule.myclass)添加事件侦听器,而不是模块