有没有办法在运行时获取DefaultProperty元数据?

时间:2016-12-01 03:07:22

标签: actionscript-3 flash flex flex4

我正在尝试在ActionScript中获取类的DefaultProperty元数据,但我在元数据XML中找不到任何提及DefaultProperty的内容。

我正在使用以下代码:

var describedTypeRecord:DescribeTypeCacheRecord = mx.utils.DescribeTypeCache.describeType(BorderContainer);
var typeDescription:* = describedTypeRecord.typeDescription;

XML很长但是这里是它返回的第一个节点:

<type name="spark.components::BorderContainer" base="spark.components::SkinnableContainer" isDynamic="false" isFinal="false" isStatic="false">

BorderContainer或SkinnableContainer的默认属性是mxmlContentFactory

[DefaultProperty("mxmlContentFactory")]

我也尝试过RichText。默认属性为“content”:

[DefaultProperty("content")]

它似乎没有在元数据中显示任何内容。

在编译器选项中,我包含了编译器参数:

-keep-as3-metadata+=DefaultProperty

1 个答案:

答案 0 :(得分:0)

它没有在某些类上设置,但如果定义了它,它将在超类上定义。

我正在检查BorderContainer,但它是在SkinnableContainer上定义的:

<metadata name="DefaultProperty">
  <arg key="" value="mxmlContentFactory"/>
</metadata>

我发布的代码在主类上定义时起作用。如果一个类没有默认属性,我会获得所有超类的列表并检查每个超类,直到我得到对象或UIComponent。