天天看點

Flex 中可以應用于 ActionScript 類的元标簽

Flex中的元标簽清單如下:

标簽 描述
[ArrayElementType("elementType")] 在數組中定義所有允許的資料類型。

[Bindable]

[Bindable(event="eventname")]

聲明一個屬性可以在代碼中使用資料綁定表達式,Bindable可以用來綁定簡單資料類型、類、複雜資料類型以及函數。
[DefaultProperty("propertyName")] 定義元件在MXML中使用時的預設屬性的名稱。
[Deprecated] 辨別一個類或類的元素是不推薦使用的,這樣編譯器能認出他并在被調用時給出一個警告資訊。
[Effect] 定義MXML的特效屬性名稱。
[Embed] 在編譯時導入 JPED,PNG,SVG 或 SWF檔案。也會導入SWC檔案的圖檔資源。他的功能等同于MXML中的 @Embe 文法。
[Event] 定義MXML的事件屬性的名稱和類型。
[Exclude] 使 Flex Builder 的标簽檢查器忽略類元素。文法類似 [Exclude(name="label",    kind="property")]
[ExcludeClass] 是 Flex Builder 标簽檢查器忽略類。這相當于ASDoc中的 @private 标簽。
[IconFile] 定義一個圖示檔案,使元件在Adobe Flex Builder的插入面闆中以該圖示顯示。
[Inspectable] 定義一個屬性的清單,供元件使用者在 Flex    Builder 的的屬性提示和标簽檢查中使用。同時也定義了屬性的可用值。
[InstanceType] 指定了 IDeferredInstance 中的,屬性接受的資料類型。
[NonCommittingChangeEvent] 定義一個事件過渡觸發器。
[RemoteClass] 把一個ActionScript對象映射到Java對象。
[Style] 為元件的樣式屬性定義一個MXML标簽屬性。
[Transient] 當一個 ActionScript 對象被映射到Java對象後,被該标簽辨別的屬性,會從發送到服務端的資料中忽略掉。

[ArrayElementType]

使用ArrayElementType中繼資料标簽可以讓你定義數組元素的資料類型。

[ArrayElementType("Number")]

public var arr:Array;

事實上,MXML編譯器隻針對mxml代碼中的ArrayElementType中繼資料标簽的用法進行合理性檢查。而對actionscript代碼中的用法不進行合理性檢查,通過試驗可以知道,ArrayElementType标簽此時是無效的。

也就是說,上面的聲明是無效的~,隻有在MXML裡才能正确檢查,你可以測試一下:

arr.push(1);

arr.push("name"); //并不會報錯

Bindable綁定資料的例子

申明變量txt可綁定後,當txt值改變,綁定txt的Label顯示的内容也會跟着改變。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

layout="absolute" creationComplete="init()">

  <mx:Script>

    <![CDATA[

      [Bindable]

      private var txt:String = "Hello world.";

      private function init():void

      {

                            changeBtn.addEventListener(MouseEvent.CLICK,

                             function():void{txt="Hello World,Hello World."});

      }

    ]]>

  </mx:Script>

  <mx:Label x="10" y="10" text="{txt}"/>

  <mx:Button x="10" y="36" label="更新資料" id="changeBtn"/>

</mx:Application>

[DefaultProperty("propertyName")]

DefaultProperty中繼資料标簽用來将一個單一屬性設定為某個類的預設屬性。它允許在一個容器标簽内設定屬性,而不用定義屬性的名字。

package myComponents

{

    import mx.controls.TextArea;

    // 定義一個預設的屬性defaultText,下例中的Hello将做為defaultText的值。

    [DefaultProperty("defaultText")]

    public class TextAreaDefaultProp extends TextArea {

        public function TextAreaDefaultProp()

        {

            super();

        }      

        // Define a setter method to set the text property

        // to the value of the default property.

        public function set defaultText(value:String):void {

            if (value!=null)

            text=value;

        }

        public function get defaultText():String {

            return text;

        }

    }

}

[Deprecated]

A class or class elements marked as deprecated is one which is considered obsolete, and whose use is discouraged in the current release. While the class or class element still works, its use can generate compiler warnings.

[Embed]

Embed中繼資料标簽用來導入圖檔到程式。可以通過兩種方式使用Embed。你可以将圖檔嵌入到ActionScript中并将其指派給一個變量(如同下面代碼中的第一個例子),或者你也可以将圖檔直接指派給元件的屬性(使用下面代碼中的第二個例子所示的文法規則)。

例1:

[Embed(source=”myIcon.gif”)]

[Bindable]

public var myIcon:Class;<mx:Button label=”Icon Button 1″ icon=”{myIcon}”/>

<mx:Button label=”Icon Button 2″ icon=”{myIcon}”/>

例2:

<mx:Button label=”Icon Button 1″ icon=”@Embed(source=myIcon.gif’)”/><mx:Button label=”Icon Button 2″ icon=”@Embed(source=myIcon.gif’)”/>

上面這兩個例子産生的結果是一樣的。建立myIcon類的好處是,它在一個類中隻定義一次并可以綁定到程式中的多個元件。

[Event]

Event中繼資料标簽用來聲明那些被自定義類分派的事件。将這個中繼資料标簽添加到類定義中之後,你就可以在MXML标簽中添加事件處理函數來初始化該自定義類。

[Effect]

Effect中繼資料标簽用來定義一個自定義效果,當某個事件發生的時候該效果會被分派。

[IconFile]

IconFile 是用來定義一個jpg,gif或者png檔案的檔案名的,它在你的自定義類中作為圖示來使用。[Embed]中繼資料标簽可以用來嵌入圖檔、SWF檔案、音 樂檔案以及視訊檔案等,而IconFile則隻是用來嵌入用來作為自定義類圖示的檔案。下面是一個IconFile的例子:

[IconFile(”icon.png”)]

public class CustomButton extends Button

{}

[Inspectable]

在使用Flex Builder 2的時候,你可能會希望某些自定義元件的屬性在代碼提示和屬性檢查器(property inspector)中顯示,Inspectable中繼資料标簽就是用來定義那些屬性的。

[InstanceType]

當在一個模闆對象中聲明一個像IDeferredInstance這樣的變量時,InstanceType中繼資料标簽就用來聲明對象的類型。下面是InstanceType的用法:

[InstanceType(”package.className”)]

[NonCommittingChangeEvent]

NonCommittingChangeEvent中繼資料标簽在某個特定事件發生的時候可以防止變量在事件發生的過程中被更改。

[RemoteClass]

RemoteClass 可以用來将一個ActionScript類綁定到一個Java類或一個ColdFusion CFC。這樣做可以自動轉換資料類型。下面的例子将包com.mydomain中的名為MyClass的ActionScript類綁定到了同一個包中名 為MyClass的Java類:

package com.mydomain {

[Bindable]

[RemoteClass(alias=”com.mydomain.MyClass”)]

public class MyClass {

public var id:int; public var myText:String;

}

}

[Style]

Style中繼資料标簽用來為元件定義自定義樣式屬性的。隻需要簡單地将Sytle中繼資料标簽添加到類的定義當然,然後就可以使用getSytle方法擷取它的值了。

在MXML裡使用該元件:

<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

    xmlns:MyComp="myComponents.*">

    <MyComp:TextAreaDefaultProp>Hello</MyComp:TextAreaDefaultProp>

</mx:Application>

更多資訊以及例子請參閱:http://livedocs.adobe.com/flex/3/html/metadata_3.html

繼續閱讀