Flex中自定义元数据标签

不知道大家注意到没有,诸如Parsley、FlexUnit框架都使用了不少自定义元数据标签。在Flex中怎样自定义元数据标签?进一步说,如何为类、属性方法添加自定义元数据标签供运行时使用?我们将以用三个步骤解答这个问题。第一步:配置编译器;第二步:编写元数据标签;第三步:使用describeType方法。

1. 配置编译器

新建Flex库项目:添加额外的编译参数-locale en_US -keep-as3-metadata+=VariableMeta,PropertyMeta,MethodMeta,元数据标签名称由逗号分隔。

提示:使用-keep-as3-metadata生成SWC库,将其添加到目标项目并在该项目中使用元数据标签,再也不需要配置额外的编译参数。

2. 编写元数据标签

如下代码:

package
{
  [ClassMeta(param1 = "value 1")]
  public class TestClass
  {
    [VariableMeta(param1 = "value 1")]
    public var someVariable:String;

    [PropertyMeta(param1 = "value 1", param2 = "value 2")]
    private var _someProperty:String;

    public function get someProperty():String
    {
      return _someProperty;
    }

    public function set someProperty(value:String):void
    {
      _someProperty = value;
    }

    [MethodMeta(param1 = "value 1")]
    public function someMethod():void
    {
    }

    private var _seriesType:String;

    [Inspectable(category="General", enumeration="Line,Mountain,Candlestick,HLOC", defaultValue="Mountain")]

    public function get seriesType():String
    {
      return _seriesType;
    }

    public function set seriesType(value:String):void
    {
      _seriesType = value;
    }
  }
}

为便于大家理解元数据标签,我们在代码的最后部分添加了Flex SDK中自带的Inspectable元数据标签。

3. 使用describeType方法

使用describeType(TestClass)生成描述该对象的XML 对象。然后我们就可以对该对象进行反射编程了。

发表评论