我有<mx:Application>
,其中包含<mx:Module>
。该模块有几个子模块。它还有一些我创建的类的实例。我正在尝试让这个类的方法调度一个可以被模块“听到”并处理的事件。这种情况没有发生。
有什么想法吗?
更清楚一点,我在类方法中使用'dispatchEvent'。这个类的实例有:mx.core.Application.myapplication.mymodule.myclass
调度事件的是“myclass.somefunction”。我有一个在'mymodule'中注册的监听器。但是,当函数/方法运行时没有任何反应。
答案 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)添加事件侦听器,而不是模块