ActionScript 3 / Flex 3 - 向班级添加自定义事件
说我有以下活动:
import flash.events.Event;
public class SomeEvent extends Event
{
public static const EVENT_ACTION:String = "eventAction";
public function SomeEvent(type:String) {
super(type);
}
override public function clone():Event {
return new SomeEvent(this.type);
}
}
......以及以下类:
public class SomeClass extends EventDispatcher
{
public function someFunction():void
{
dispatchEvent(new SomeEvent("eventAction"));
}
}
显示'SomeClass'抛出'SomeEvent'的最佳方式是什么?我找到的唯一方法是使用[Event]属性修饰'SomeClass',如下所示:
[Event (name="eventAction", type="SomeEvent")]
这允许我实例化类并通过执行以下操作添加事件侦听器:
var someClassInstance:SomeClass = new SomeClass();
someClassInstance.addEventListener(SomeEvent.EVENT_ACTION, mycallbackmethod);
有更好的方法吗?将[Event]属性放在类后跟一些字符串文字只是感觉......错了。在此先感谢您的帮助!
答案 0 :(得分:3)
你做得对。目前,AS3编译器仅允许元数据中的字符串文字。常量不能使用。
顺便说一句,Adobe的公共错误数据库有一个feature request to allow ActionScript constants in metadata。随意投票。
答案 1 :(得分:0)
我知道,我也有同感;使用字符串文字似乎有点错误。但据我所知,从我见过的所有文档和我参加过的演讲以及阅读Flex源代码等,看来这是正确的方法。