在类中声明可调度事件的任何内部方式,以便从外部访问它们的列表?

jay*_*rjo 1 events actionscript-3

我想在我的类中声明一组由它调度的事件,然后使用来自控制器类的这些信息来自动添加事件监听器.Action Script 3中是否有这种语言结构?您可能会想到这样的方法 - 好,坏?

Nox*_*tis 5

您可以[Event]为您的班级使用元标记以及describeType()方法.

package
{
    import flash.display.Sprite;
    import flash.utils.describeType;

    [Event(name="test",type="TestEvent")]
    public class Test extends Sprite
    {
        public function Test()
        {
            var description:XML = describeType(this);
            var meta:XMLList = description.descendants("metadata");
            var events:XMLList = meta.(attribute("name") == "Event");
            trace(events.toXMLString());
            /*
            trace output:
            <metadata name="Event">
                <arg key="name" value="test"/>
                <arg key="type" value="TestEvent"/>
            </metadata>            
            */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

元标记:http://livedocs.adobe.com/flex/3/html/help.html?content= metadata_3.html# 159710

describeType():http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#describeType%28%29

顺便说一句,如果您声明这样的自定义事件,您还将在Flash Builder中获得适当的代码提示.