在ActionScript / Flex 3中将事件与类关联的最佳方法是什么?

时间:2009-01-16 19:55:50

标签: flex actionscript-3 events actionscript flex3

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]属性放在类后跟一些字符串文字只是感觉......错了。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你做得对。目前,AS3编译器仅允许元数据中的字符串文字。常量不能使用。

顺便说一句,Adobe的公共错误数据库有一个feature request to allow ActionScript constants in metadata。随意投票。

答案 1 :(得分:0)

我知道,我也有同感;使用字符串文字似乎有点错误。但据我所知,从我见过的所有文档和我参加过的演讲以及阅读Flex源代码等,看来这是正确的方法。