as3中的自定义事件类型标识符是否必须是唯一的?

时间:2009-10-13 23:40:38

标签: actionscript-3 events event-handling uniqueidentifier

假设我有两个扩展Event的类:

public class CustomEventOne extends Event
{
    public static const EVENT_TYPE_ONE:String = "click";

     //... rest of custom event

public class CustomEventTwo extends Event
{
    public static const EVENT_TYPE_TWO:String = "click";

     //... rest of custom event

他们都使用相同的字符串"click"声明事件类型是否可以?

或者事件类型标识符在整个应用程序中是否必须是唯一的?

2 个答案:

答案 0 :(得分:5)

你肯定会遇到与此冲突。如果您使用冒泡或在同一对象上侦听这两个事件,这将非常明显。事实上,事件监听器正在侦听字符串。没有强类型,只有 if(string == type)检查(这很简单,但基本上是发生了什么)。

命名这些事件类型是正确的:

public static const EVENT_TYPE_ONE:String = "eventTypeOne";

如果您使用任何[Event(name="eventTypeOne", type="com.me.events.CustomEvent")],则此语法至关重要。

答案 1 :(得分:0)

如果您的代码通过使用CustomEventOne调用addEventListener来侦听对象上的CustomEventOne.EVENT_TYPE_ONE事件,则当对象调度CustomEventOne.EVENT_TYPE_ONE或{时,将调用该事件处理程序{1}}两者基本上都是CustomEventTwo.EVENT_TYPE_TWO。正如Joel所说,对象侦听的是简单字符串的事件类型。