AS3.0中自定义matedata

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/ 

posted @ 2012-08-04 10:25  Matrix.42  阅读(441)  评论(0编辑  收藏  举报