Flex元數據

[Bindable]就是所謂的元數據標籤。元數據標籤是一種特殊的標籤,它在代碼中的作用就是向編譯器提供如何編譯程序的信息。實際上,這些標籤並沒有被編譯到生成的SWF文件中,而只是告訴編譯器如何生成SWF文件。文檔中列出的元數據標籤共有12個。

 

1)[ArrayElementType] 

 

 實際上,定義一個數組通常來說是一件很平常的事情,因爲數組中的元素可以是任何類型的。不過,使用ArrayElementType元數據標籤可以讓你定義數組元素的數據類型。下面的例子展示瞭如何使用[ArrayElementType]:


 程序代碼
   [ArrayElementType("String")]  public var arrayOfStrings:Array;

 

   [ArrayElementType("Number")]  public var arrayOfNumbers:Array;

 

   [ArrayElementType("mx.core.UIComponent")]  public var arrayOfUIComponents:Array;

 

2) [Bindable]

 

   Bindable元數據標籤是最經常用到的一個元數據標籤,因爲它使程序組件之間的數據同步變得很容易。Bindable可以用來綁定簡單數據類型、類、複雜數據類型以及函數。綁定數據的時候,你必須先使用元數據標籤定義一下數據,Bindable也可以用來綁定到事件。

 

3) [DefaultProperty] 

 

 DefaultProperty元數據標籤用來將一個單一屬性設定爲某個類的默認屬性。它允許在一個容器標籤內設定屬性,而不用定義屬性的名字。

 

4) [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類的好處是,它在一個類中只定義一次並可以綁定到程序中的多個組件。

 

5 ) [Event]

 

 Event元數據標籤用來聲明那些被自定義類分派的事件。將這個元數據標籤添加到類定義中之後,你就可以在MXML標籤中添加事件處理函數來初始化該自定義類。Listing 5 創建了一個自定義Button類,每當它的label屬性改變的時候就會分派一個事件。Listing 6 所顯示的主程序文件初始化了這個自定義Button並創建了事件處理函數,該函數將新的labe屬性值賦給了一個TextArea組件以顯示當前發生的更改。

 

 

6) [Effect]
Effect元數據標籤用來定義一個自定義效果,當某個事件發生的時候該效果會被分派。這個示例可以基於前面Event的例子來創建,通過簡單地更改ButtonLabel類(Listing 7 )中的一行代碼,就定義了一個效果,該效果可以在MXML標籤中直接使用(Listing 8 )。
[IconFile]
IconFile 是用來定義一個jpg,gif或者png文件的文件名的,它在你的自定義類中作爲圖標來使用。[Embed]元數據標籤可以用來嵌入圖片、SWF文件、音樂文件以及視頻文件等,而IconFile則只是用來嵌入用來作爲自定義類圖標的文件。下面是一個IconFile的例子:

 程序代碼
[IconFile("icon.png")]
public class CustomButton extends Button
{

}


7 )[Inspectable]

 

在使用Flex Builder 2的時候,你可能會希望某些自定義組件的屬性在代碼提示和屬性檢查器(property inspector)中顯示,Inspectable元數據標籤就是用來定義那些屬性的。Listing 9 展示的例子定義了一個inspectable的ccType變量,它定義了Visa爲默認值、Credit Card爲類別並將取值範圍定義爲包含了Visa, Mastercard, Discover, 和 American Express的枚舉。

8 ) [InstanceType]


當在一個模板對象中聲明一個像IDeferredInstance這樣的變量時,InstanceType元數據標籤就用來聲明對象的類型。下面是InstanceType的用法:

 程序代碼
[InstanceType("package.className")]
[NonCommittingChangeEvent]
NonCommittingChangeEvent元數據標籤在某個特定事件發生的時候可以防止變量在事件發生的過程中被更改。Listing 10 展示了它是如何工作的。一個名爲s的字符串類型的私有變量被綁定到了名爲ti2的TextInput組件上。另外一個id爲ti1的TextInput組件在它的text發生更改的時候就會將s的值設置爲它的text屬性的值。另外,當triggerBinding 事件被分派的時候,附加在s變量上的Binding元數據標籤就會進行綁定。只有在Enter鍵在ti1 TextInput組件中被按下時纔會分派triggerBinding事件。

9) [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;

   }
}

 

10) [Style]


Style元數據標籤用來爲組件定義自定義樣式屬性的。只需要簡單地將Sytle元數據標籤添加到類的定義當然,然後就可以使用getSytle方法獲取它的值了。Listing 11 和 12 中的例子定義了兩個樣式,分別爲borderColor 和fillColor,它們的數據類型都是uint。當類初始化的時候這兩個樣式就會在標籤中被設定。代碼中覆寫了updateDisplayList函數,用自定義的樣式畫了一個圓形邊框並將其填充。
現在你應該會有這樣的感覺了:“喔,現在我知道在哪裏可以使用它們了”或者“嗯,我想我會在新的項目中嘗試使用這些元數據標籤”。如果你沒有,那麼你可能需要回過頭去再看一遍這篇文章。OK,我想說的是Adobe Flex小組提供給我們的元數據標籤不只是非常的強大,可以讓我們擴展或自定義我們要做的東西,而且它還非常易於使用。通過使用它們,僅僅幾行代碼就可以完成一大堆事情。如果不使用這些標籤,你會發現在Flex 2中實現一些東西是很辛苦的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章