AS3/Flex中的自定义元数据?

11
如何在ActionScript3/Flex中创建和使用自定义元数据?

非常好的问题和答案。但是,有人能列举一些这将如何有用的例子吗?谢谢! - chamberlainpi
@bigp 一些架构框架使用自定义元数据(例如Parsley、Swiz)。 - Timofei Davydik
这些自定义元数据在编译时,Flash CS* IDE是否也能正常工作? - chamberlainpi
@bigp 应该可以。你可以像其他IDE一样处理类和对象,因此反射应该可以工作。 - Timofei Davydik
2个回答

19

在 Flex 中处理元数据有两个常用的方向:

  1. 使用反射(或 Adobe 的内省)在运行时处理。你可以在这里找到文档here。还有一些第三方库提供了更方便的反射 API,例如as3-commons-reflectParsley 的反射 API
  2. 使用 Flex 编译器扩展,该功能自 Flex 4 SDK revision 8165 版本引入(请参见详细信息)。还可以查看相应的讨论官方文档

15

要创建元数据,只需在类定义中使用方括号语法:

[ClassAttr]
public class ClassWithMetadata {
    [AttributeNoArgs]
    public var data:Object;

    [AttributeWithArgs(arg="value)]
    public var prop:Object;
}

调用describeType(ClassWithMetadata)以获取您的类的XML描述。 元数据将在其中,您可以解析它并按照自己的方式进行处理。
要防止编译器删除您的元数据,请为您使用的每个属性名称添加编译器参数-keep-as3-metadata Attribute。 这可以在库设置中或在使用元数据的每个项目中完成。


谢谢你的示例!如果我可以接受多个答案就好了... :) - Timofei Davydik
这是Flex编译器(mxmlc)特有的,还是Flash Professional编译器也会保留元数据? - Triynko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接