metadata就是元数据,反应一个类本质的属性,可以通过describeType(obj)来得到反应该对象的xml.
要自定义元数据,如[MyMatedata()]:
1 package { 2 public class MyClass extends Object{ 3 [MyMatedata(name="ha",name2="haha2")] 4 public var a:String; 5 public function MyClass(){ 6 super(); 7 } 8 public function getA():void{ 9 trace("dd"); 10 } 11 } 12 }
describeType(new MyClass())返回:
1 <type name="MyClass" base="Object" isDynamic="false" isFinal="false" isStatic="false"> 2 <extendsClass type="Object"/> 3 <variable name="a" type="String"> 4 <metadata name="MyMatedata">---------------------------------->自定义元数据 5 <arg key="name" value="ha"/> 6 <arg key="name2" value="haha2"/> 7 </metadata> 8 <metadata name="__go_to_definition_help"> 9 <arg key="pos" value="108"/> 10 </metadata> 11 </variable> 12 <method name="getA" declaredBy="MyClass" returnType="void"> 13 <metadata name="__go_to_definition_help"> 14 <arg key="pos" value="189"/> 15 </metadata> 16 </method> 17 <metadata name="__go_to_ctor_definition_help"> 18 <arg key="pos" value="137"/> 19 </metadata> 20 <metadata name="__go_to_definition_help"> 21 <arg key="pos" value="26"/> 22 </metadata> 23 </type>
这样就可以通过给类添加元数据从而进行编码活动,基于元数据的编程很多时候被忽视,但是使用元数据有时候会很方便,尤其是在做AS3反射,和写框架的时候.
describeType 实现actionscript语言的反射,这样通过元数据可以进行更多的编程.
在使用自定义元数据时,需要在flex sdk的编译参数里面添加.
-keep-as3-metadata+=MyMetadata
注意是+= ,如果写成=就会覆盖很多原生自带的元数据标签,从而导致出问题
转自:http://sswilliam.blog.163.com/blog/static/18969638320116103225397/