【问题标题】:Is there a way to get the DefaultProperty metadata at runtime?有没有办法在运行时获取 DefaultProperty 元数据?
【发布时间】:2016-12-01 03:07:22
【问题描述】:

我正在尝试获取 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。默认属性是“内容”:

[DefaultProperty("content")]

它似乎没有在元数据中显示任何关于它的信息。

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

-keep-as3-metadata+=DefaultProperty

【问题讨论】:

  • 我正在获取 Richtext 的 defaultProperty 元数据标签。 mxmlContentFactory 是 SkinnableContainer 的 DefaultProperty,它在 SkinnableContainer 的生成 xml 中显示,但不为 BorderContainer 显示它
  • 是的。有时它们在超类上声明。我不得不走遍父类并检查每一个才能找到它。

标签: actionscript-3 flash apache-flex flex4


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2019-09-29
    相关资源
    最近更新 更多