元数据标签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,效果

原文地址:https://www.cnblogs.com/winson/p/3040627.html