天天看點

Flex 中繼資料标簽

Flex中繼資料标簽 1、[ArrayElementType]

使用ArrayElementType中繼資料标簽可以讓你定義數組元素的資料類型。 程式代碼: [ArrayElementType("String")] 

 public vararrayOfStrings:Array;  [ArrayElementType("Number")] 

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

 public vararrayOfUIComponents:Array;

2、[Bindable]

Bindable可以用來綁定簡單資料類型、類、複雜資料類型以及函數。綁定資料的時候,你必須先使用中繼資料标簽定義一下資料。 A simple use of[Bindable]

 <fx:Script>

 <![CDATA[

  [Bindable]

  private var me:String="RichTretola";

 ]]>

 </fx:Script>

 <mx:Panel title="Simple Binding"width="500" height="90"

  paddingTop="10"paddingLeft="10" paddingRight="10" paddingBottom=" 10"layout="horizontal">

 <mx:Labeltext="{me}"/>

 </mx:Panel>

Bindable也可以用來綁定到事件 Using [Bindable] with getters andsetters

 <fx:Script>

 <![CDATA[

  private var _phoneNumber:String= " ";

  // Bind getter function tophoneNumberChanged event

  [Bindable(event="phoneNumberChanged")]

  public function getphoneNumber():String 

  {

   return_phoneNumber;

  }

  // Setter method.

  public function setphoneNumber(value:String):void 

  {

   if(value.length<10) 

   {

    _phoneNumber= value;

   }

   else 

   {

    _phoneNumber= phoneFormatter.format(value);

   }

   // Create anddispatch event

   vareventObj:Event = new Event("phoneNumberChanged");

   dispatchEvent(eventObj);

  }

 ]]>

 </fx:Script>

 <mx:PhoneFormatterid="phoneFormatter"

  formatString="(###) ###-####"validPatternChars="#-() " />

 <mx:Panel title="Bind with Gettersand Setters" width="500" height="90"

  paddingTop="10"paddingLeft="10" paddingRight="10" paddingBottom=" 10"layout="horizontal">

  <mx:TextInputid="ti1" change="phoneNumber=ti1.text" maxChars="10"restrict="0-9"/>

  <mx:TextInputid="ti2" text="{phoneNumber}"/>

 </mx:Panel>

3、[DefaultProperty]

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

{

 import mx.controls.Button;

 [DefaultProperty("label")]

 public class MyButton extends Button

 {

 }

} Using the MyButton class wih[DefaultProperty]  <comps:MyButton>

  <mx:String>Test</mx:String>

 </comps:MyButton>

4、[Embed]

Embed中繼資料标簽用來導入圖檔到程式。可以通過兩種方式使用Embed。你可以将圖檔嵌入到ActionScript中并将其指派給一個變量,或者你也可以将圖檔直接指派給元件的屬性。 方式一:

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

[Bindable]

public var myIcon:Class; <mx:Buttonlabel="Icon Button 1"icon="{myIcon}"/> <mx:Buttonlabel="Icon Button 2"icon="{myIcon}"/> 方式二:

<mx:Button label="Icon Button 1"icon="@Embed(source=myIcon.gif')"/> <mx:Buttonlabel="Icon Button 2"icon="@Embed(source=myIcon.gif')"/> 上面這兩個例子産生的結果是一樣的。建立myIcon類的好處是,它在一個類中隻定義一次并可以綁定到程式中的多個元件。   5、[Event]

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

{

 import mx.controls.Button;

 import flash.events.Event;

 // Define the custom event

 [Event(name="labelChanged",type="flash.events.Event")]  public classButtonLabel extends Button

 {

  // property to hold labelvalue

  private var_myLabel:String;

  // public setter method

  public function setmyLabel(s:String):void 

  {

   _myLabel =s;

   this.label =s;

   // Create anddispatch custom event

   vareventObj:Event = new Event("labelChanged");

   dispatchEvent(eventObj);

  }  

 }

} Using the ButtonLabel class withthe labelChanged [Event]

 <fx:Script>

 <![CDATA[

  import mx.controls.Alert;

  importflash.events.Event;

  // method to handle customevent

  public functionlabelChanged(eventObj:Event):void 

  {

   myTA.text=myTA.text + "\n"+ eventObj.target.label;

   myTA.verticalScrollPosition= myTA.verticalScrollPosition +20;

  }

 ]]>

 </fx:Script>

 <mx:Panel title="Event Sample"width="500" height="275"

  paddingTop="10"paddingLeft="10" paddingRight="10" paddingBottom=" 10"layout="absolute">

  <mx:TextInputid="buttonLabelTI"

   change="myButton.myLabel=buttonLabelTI.text"x="10" y="9"/>

  <!--Instantiatecustom class and define method to handle label- Changedevent-->

  <comps:ButtonLabelid="myButton" labelChanged="labelChanged(event);" x="10"y="39"/>

  <mx:TextAreaid="myTA" width="200" height="200" x="249"y="10"/>

 </mx:Panel>

6、[Effect]

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

...

// Define the custom event

[Event(name="labelChanged", type="flash.events.Event")]

[Effect(name="labelChangedEffect", event="labelChanged")]

public class ButtonLabel extends Button {

... Add labelChangedEffect to theComponent

Instantiation MXML Tag

<comps:ButtonLabel id="myButton"labelChanged="labelChanged(event);"

labelChangedEffect="myEffect" x="10"y="39"/>   7、[IconFile]

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

[IconFile("icon.png")]

public class CustomButton extends Button

{

}   8、[Inspectable]

Inspectable中繼資料标簽可以用來定義那些能在代碼提示和屬性檢測器(propertyinspector)中顯示的屬性。  <fx:Script>

 <![CDATA[

  [Inspectable(defaultValue="Visa",

  enumeration="Visa,Mastercard,Discover,AmericanExpress",

  category="Credit Card",type="String")]

  public var ccType:String;

 ]]>

 </fx:Script>

</mx:HBox>

 <comps:MyComponentccType=""/>

9、[InstanceType]

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

用法:

[InstanceType("package.className")]  

10、[NonCommittingChangeEvent]

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

 <fx:Script>

 <![CDATA[

  importflash.events.Event;

  private vareventObj:Event;

  [Bindable(event="triggerBinding")]

  [NonCommittingChangeEvent("change")]

  private var s:String;

  private functiontriggerBinding():void

  {

   eventObj =new Event("triggerBinding");

   dispatchEvent(eventObj);

  }

 ]]>

 </fx:Script>

 <mx:Paneltitle="NonCommittingChangeEvent Sample" width="500"height="90" 

  paddingTop="10"paddingLeft="10" paddingRight="10" paddingBottom=" 10"layout="horizontal">

  <mx:TextInputid="ti1" change="s=ti1.text"enter="triggerBinding()"/>

  <mx:TextInputid="ti2" text="{s}" />  </mx:Panel>

11、[RemoteClass]

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

{

 [Bindable]

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

 public class MyClass 

 {

  public varid:int;   public varmyText:String;     }

}  

12、[Style]

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

package comps

{

 import mx.core.UIComponent;

 [Style(name="borderColor",type="uint",format="Color",inherit="no")]

 [Style(name="fillColor",type="uint",format="Color",inherit="no")]

 public class CustomCircle extendsUIComponent 

 {

  public functionCustomCircle()

  {

   super();

  }

  override protected functionupdateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void 

  {

   super.updateDisplayList(unscaledWidth,unscaledHeight);

   graphics.lineStyle(1,getStyle("borderColor"), 1.0);

   graphics.beginFill(getStyle("fillColor"),1.0);

   graphics.drawEllipse(0,0,100,100);

  }

 }

} Using CustomCircle and assigningcustom style properties

 <mx:Panel title="Style Sample"width="200" height="200"

  paddingTop="10"paddingLeft="10" paddingRight="10" paddingBottom=" 10"layout="horizontal">

  <comps:CustomCircleborderColor="#000000" fillColor="#FF0000" />

 </mx:Panel>  

标簽 描述
[ArrayElementType] 在數組中定義所有允許的資料類型。
[Bindable] 聲明一個屬性可以在代碼中使用資料綁定表達式。
[DefaultProperty] 定義元件在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 FlexBuilder的插入面闆中以該圖示顯示。
[Inspectable] 定義一個屬性的清單,供元件使用者在 Flex Builder的的屬性提示和标簽檢查中使用。同時也定義了屬性的可用值。
[InstanceType] 指定了 IDeferredInstance中的,屬性接受的資料類型。
[NonCommittingChangeEvent] 定義一個事件過渡觸發器。
[RemoteClass] 把一個ActionScript對象映射到Java對象。
[Style] 為元件的樣式屬性定義一個MXML标簽屬性。
[Transient] 當一個 ActionScript對象被映射到Java對象後,被該标簽辨別的屬性,會從發送到服務端的資料中忽略掉。