Flex 3 metadata tags
Flex引入了元數(shù)據(jù)標簽的概念,它告訴編譯器如何編譯這段Flex 或actionscript代碼。大多數(shù)人都使用過[Bindable]標簽,元數(shù)據(jù)標簽是一種特殊的標簽,它在代碼中的作用就是向編譯器提供如何編譯程序的信息。實際上,這些標簽并沒有被編譯到生成的SWF文件中,而只是告訴編譯器如何生成SWF 文件。 這篇Post結(jié)合網(wǎng)上相關(guān)的
資料 以及Adobe的
help resource center的相關(guān)材料 介紹了16個元數(shù)據(jù)標簽。
[ArrayElementType]
實際上,定義一個數(shù)組通常來說是一件很平常的事情,因為數(shù)組中的元素可以是任何類型的。不過,使用
ArrayElementType元數(shù)據(jù)標簽可以讓你定義數(shù)組元素的數(shù)據(jù)類型。下面的例子展示了如何使用[ArrayElementType]:
[ArrayElementType(”String”)]
public var arrayOfStrings:Array; [ArrayElementType(”Number”)]
public var arrayOfNumbers:Array;
[ArrayElementType(”mx.core.UIComponent”)]
public var arrayOfUIComponents:Array;
[Bindable]
Bindable元數(shù)據(jù)標簽是最經(jīng)常用到的一個元數(shù)據(jù)標簽,因為它使程序組件之間的數(shù)據(jù)同步變得很容易。Bindable可以用來綁定簡單數(shù)據(jù)類型、類、復(fù)雜數(shù)據(jù)類型以及函數(shù)。綁定數(shù)據(jù)的時候,你必須先使用元數(shù)據(jù)標簽定義一下數(shù)據(jù)。Bindable也可以用來綁定到事件。
[DefaultProperty]
DefaultProperty元數(shù)據(jù)標簽用來將一個單一屬性設(shè)定為某個類的默認屬性。它允許在一個容器標簽內(nèi)設(shè)定屬性,而不用定義屬性的名字。一個簡單的例子就是一個自定義Button類。
Listing 3 展示了一個簡單的Button類,它將label屬性設(shè)定為了DefaultProperty。
Listing 4 展示了label屬性是如何在自定義Button標簽中作為一個字符串定義的。
[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元數(shù)據(jù)標簽用來導(dǎo)入圖片到程序。可以通過兩種方式使用Embed。你可以將圖片嵌入到ActionScript中并將其指派給一個變量(如同下面代碼中的第一個例子),或者你也可以將圖片直接指派給組件的屬性(使用下面代碼中的第二個例子所示的語法規(guī)則)。
例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’)”/>
上面這兩個例子產(chǎn)生的結(jié)果是一樣的。創(chuàng)建myIcon類的好處是,它在一個類中只定義一次并可以綁定到程序中的多個組件。
[Event]
Event元數(shù)據(jù)標簽用來聲明那些被自定義類分派的事件。將這個元數(shù)據(jù)標簽添加到類定義中之后,你就可以在MXML標簽中添加事件處理函數(shù)來初始化該自定義類。
[Effect]
Effect元數(shù)據(jù)標簽用來定義一個自定義效果,當某個事件發(fā)生的時候該效果會被分派。
[IconFile]
IconFile 是用來定義一個jpg,gif或者png文件的文件名的,它在你的自定義類中作為圖標來使用。[Embed]元數(shù)據(jù)標簽可以用來嵌入圖片、SWF文件、音樂文件以及視頻文件等,而IconFile則只是用來嵌入用來作為自定義類圖標的文件。下面是一個IconFile的例子:
[IconFile(”icon.png”)]
public class CustomButton extends Button
{}
[Inspectable]
在使用Flex Builder 2的時候,你可能會希望某些自定義組件的屬性在代碼提示和屬性檢查器(property inspector)中顯示,Inspectable元數(shù)據(jù)標簽就是用來定義那些屬性的。
[InstanceType]
當在一個模板對象中聲明一個像IDeferredInstance這樣的變量時,InstanceType元數(shù)據(jù)標簽就用來聲明對象的類型。下面是InstanceType的用法:
[InstanceType(”package.className”)]
[NonCommittingChangeEvent]
NonCommittingChangeEvent元數(shù)據(jù)標簽在某個特定事件發(fā)生的時候可以防止變量在事件發(fā)生的過程中被更改。
[RemoteClass]
RemoteClass 可以用來將一個ActionScript類綁定到一個Java類或一個ColdFusion CFC。這樣做可以自動轉(zhuǎn)換數(shù)據(jù)類型。下面的例子將包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元數(shù)據(jù)標簽用來為組件定義自定義樣式屬性的。只需要簡單地將Sytle元數(shù)據(jù)標簽添加到類的定義當然,然后就可以使用getSytle方法獲取它的值了。
標簽 描述
[ArrayElementType] 在數(shù)組中定義所有允許的數(shù)據(jù)類型。
[Bindable] 聲明一個屬性可以在代碼中使用數(shù)據(jù)綁定表達式。
[DefaultProperty] 定義組件在MXML中使用時的默認屬性的名稱。
[Deprecated] 標識一個類或類的元素是不推薦使用的,這樣編譯器能認出他并在被調(diào)用時給出一個警告信息。
[Effect] 定義MXML的特效屬性名稱。
[Embed] 在編譯時導(dǎo)入 JPED,PNG,SVG 或 SWF文件。也會導(dǎo)入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 中的,屬性接受的數(shù)據(jù)類型。
[NonCommittingChangeEvent] 定義一個事件過渡觸發(fā)器。
[RemoteClass] 把一個ActionScript對象映射到Java對象。
[Style] 為組件的樣式屬性定義一個MXML標簽屬性。
[Transient] 當一個 ActionScript 對象被映射到Java對象后,被該標簽標識的屬性,會從發(fā)送到服務(wù)端的數(shù)據(jù)中忽略掉。