2012-06-14 76 views
2

EventDispatcher.addEventListener()需要事件类型(String类型的参数)的第一个参数。如何为所有事件添加一个侦听器?

但是当前对象可以生成多种类型的事件。

是否有可能在一个处理程序中处理它们?可能我可以通过null作为类型参数吗?

+1

不,addEventListener用于将单个处理程序添加到某个类型,您可以针对不同类型多次调用它,并为其赋予相同的处理程序,但为什么要这样做?你想达到什么目的? –

+0

我想了解什么事件生成时。 –

回答

2

你应该尽量让路周围和扩展dispatchEvent功能:

public override function dispatchEvent(evt:Event):Boolean { 
    trace(evt.type); 
    return super.dispatchEvent(evt); 
} 

你可以把你的代码在这里来处理这个对象调度所有事件。

+0

我认为这是比其他提议更好的选择,因为并非所有的事件都在Event类定义中,所以许多事件都被定义为Event的子类,这个重写派生事件的子类或猴子修补您对事件感兴趣的对象的版本将很有效。 – shaunhusain

+0

而且它很容易实现。 – turbosqel

2

是的,这是可能的

如果您使用Event类的getQualifiedClassName,则可以使用describeType获取类型。然后,您知道可以添加的所有类型,假设您将具有公共静态类型的自定义事件用作相同事件类中的字符串。然后,您可以遍历所有类型,并将所有类型的侦听器添加到调度程序。

这个想法包含在我建议使用的templelibraryEventUtils.addAll)中。

查看文档:http://templelibrary.googlecode.com/svn/trunk/doc/temple/utils/types/EventUtils.html

相关问题