元数据标签metadata tag
1、介绍
元数据标签所提供的信息是给flex编译器使用的。Flex编译器可以识别在ActionScript和MXML中定义的元数据,元数据可以用来定义组件的属性,事件,数据绑定和其他一些方面的信息。元数据是在编译期解释的,而不是运行时。元数据标签是和类,字段或者方法关联的,元数据标签修饰的总是下一条语句。
2、在ActionScript和MXML中定义元数据标签
ActionScript:
// Add the [Event] metadata tag outside of the class file. [Event(name="enableChange", type="flash.events.Event")] public class ModalText extends TextArea { ... // Define class properties/methods private var _enableTA:Boolean; // Add the [Inspectable] metadata tag before the individual property. [Inspectable(defaultValue="false")] public function set enableTA(val:Boolean):void { _enableTA = val; this.enabled = val; // Define event object, initialize it, then dispatch it. var eventObj:Event = new Event("enableChange"); dispatchEvent(eventObj); } }
MXML:可以在<fx:Metadata>标签里定义元数据,也可以在<fx:Script>标签里定义元数据。两种方式的区别是:在<fx:Metadata>标签里定义的元数据在被编译成Actionscript代码时被编译到类的前面,而<fx:Script>标签里定义的元数据编译在类里面。
<?xml version="1.0"?> <!-- TextAreaEnabled.mxml --> <mx:TextArea xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Metadata> [Event(name="enableChange", type="flash.events.Event")] </fx:Metadata> <fx:Script> <![CDATA[ // Import Event class. import flash.events.Event; // Define class properties and methods. private var _enableTA:Boolean; // Add the [Inspectable] metadata tag before the individual property. [Inspectable(defaultValue="false")] public function set enableTA(val:Boolean):void { _enableTA = val; this.enabled = val; // Define event object, initialize it, then dispatch it. var eventObj:Event = new Event("enableChange"); dispatchEvent(eventObj); } ]]> </fx:Script> </mx:TextArea>
3、Flex中的元数据标签
1)Alternative,修饰类的,指明修饰的类从哪个Flex版本开始有了新的替代类,但是该类并不过时,还是起作用。
如mx:Button里的:[Alternative(replacement="spark.components.Button", since="4.0")]
2)ArrayElementType,修饰Array变量,指明Array中元素的数据类型,这样Flex编译器可以检查给Array赋值时元素是否是正确的数据类型,不过只在MXML中才检查,actionScript中不检查。
如:
[ArrayElementType("String")]
public var newStringProperty:Array;
[ArrayElementType("Number")]
public var newNumberProperty:Array;
3、Bindable,数据绑定:语法:1、[Bindable];2、[Bindable(event="eventName")]
4、DefaultProperty,缺省属性,语法:[DefaultProperty("propertyName")],定义了此标签的属性,在MXML中给属性赋值的时候可以省略属性名:如<String>asdfasdf<String>
5、Deprecated,设置类,属性或者方法已经过时,当程序使用这类属性,编译器会给出警告。语法:四种方式:
[Deprecated("string_describing_deprecation")]
[Deprecated(message="string_describing_deprecation")]
[Deprecated(replacement="string_specifying_replacement")]
[Deprecated(replacement="string_specifying_replacement", since="version_of_replacement")]
6、Effect,效果