Flex Component EVENTS的describeType等价物

时间:2010-06-11 01:22:32

标签: flex flash actionscript-3 air

使用“内省”在Flex中我可以说:

  var classInfo:XML=describeType(SomeObject);

将为我列出访问者,方法和变量。 (http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html

但是,相当于以编程方式检查所有对象的可能事件?

(不仅仅是已经设置了事件监听器的事件,而是以某种方式逐步浏览了可能为其设置事件监听器的所有VALID事件的列表 - 我意识到这些列表很容易在线获得,这很好对于我在设计类型中知道对象类型的情况,但我需要某种方法在运行时以编程方式检查任何给定的displayobject,并确定哪些事件(如果有)与之相关或可能与之相关。)

1 个答案:

答案 0 :(得分:2)

没有办法。

使用事件元数据标记定义的事件信息仅用于通过ASDocs进行代码提示和文档编制。它与组件可能会或可能不会触发的事件无关。

在任何时间点,一部分代码都可以调用“dispatchEvent”并调度该事件。这通常用于用于绑定的“somePropertyChanged”事件。这些事件很少(如果有的话)使用事件元数据进行记录。但是,该组件仍然会触发它们。

冒泡混淆了这个问题;因为如果组件的子项触发bubble属性为true的事件;然后它几乎与触发事件的组件相同。如果没有某种代码分析器,你会以编程方式解决这个问题吗?

也就是说,有一个编译器参数来保留元数据(在http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_14.htmlhttp://jacwright.com/blog/72/using-your-own-custom-metadata-in-as3/保持as-3元数据)。

我相信如果你这样做,那么就有办法从组件中获取事件元数据;我以为使用describeType。但是,请记住元数据并不是事件的全部。