久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Flex 2 中的元數據標簽

     smoking_boy 2007-06-11
    Flex 2 中的元數據標簽

                                                        ——告訴編譯器如何編譯

    雖然多數Flex開發(fā)者都使用過[Bindable]標簽,但是很多人都不知道這個標簽的作用甚至不知道該標簽為何物。[Bindable]就是所謂的元數據標簽。元數據標簽是一種特殊的標簽,它在代碼中的作用就是向編譯器提供如何編譯程序的信息。實際上,這些標簽并沒有被編譯到生成的SWF文件中,而只是告訴編譯器如何生成SWF文件。文檔中列出的元數據標簽共有12個,本文將講解這些元數據標簽的定義并給出使用它們的示例,在看完這篇文章之后,你就會明白應該在何時何處在你的Flex 2應用程序中使用元數據標簽了。

    [ArrayElementType]

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

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

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

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


    [Bindable]

    Bindable元數據標簽是最經常用到的一個元數據標簽,因為它使程序組件之間的數據同步變得很容易。Bindable可以用來綁定簡單數據類型、類、復雜數據類型以及函數。綁定數據的時候,你必須先使用元數據標簽定義一下數據,正如Listing 1中所示的那樣。

    Bindable也可以用來綁定到事件。Listing 2展示了如何使用getter和setter函數將一個屬性綁定到一個事件上。這個例子中有一個叫做phoneNumber的私有變量,還有一個公有的setter和getter函數。使用Bindable標簽將這個getter方法綁定到了一個叫做phoneNumberChanged的事件上,只要數據發(fā)生改變setter方法就會分派phoneNumberChanged事件。通過使用setter方法,可以在數據賦予私有變量之前對其進行操作。在這個例子中,數據只有在長度大于等于10的時候才會被格式化。當phoneNumberChanged事件被分派的時候,第二個TextInput組件會被更新,因為他的text屬性綁定到了phoneNumber變量上。

    [DefaultProperty]

    DefaultProperty元數據標簽用來將一個單一屬性設定為某個類的默認屬性。它允許在一個容器標簽內設定屬性,而不用定義屬性的名字。一個簡單的例子就是一個自定義Button類。Listing 3展示了一個簡單的Button類,它將label屬性設定為了DefaultProperty。Listing 4展示了label屬性是如何在自定義Button標簽中作為一個字符串定義的。

    [Embed]

    Embed元數據標簽用來導入圖片到程序。可以通過兩種方式使用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‘)"/>


    上面這兩個例子產生的結果是一樣的。創(chuàng)建myIcon類的好處是,它在一個類中只定義一次并可以綁定到程序中的多個組件。

    [Event]

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

    [Effect]

    Effect元數據標簽用來定義一個自定義效果,當某個事件發(fā)生的時候該效果會被分派。這個示例可以基于前面Event的例子來創(chuàng)建,通過簡單地更改ButtonLabel類(Listing 7)中的一行代碼,就定義了一個效果,該效果可以在MXML標簽中直接使用(Listing 8)。

    [IconFile]

    IconFile是用來定義一個jpg,gif或者png文件的文件名的,它在你的自定義類中作為圖標來使用。[Embed]元數據標簽可以用來嵌入圖片、SWF文件、音樂文件以及視頻文件等,而IconFile則只是用來嵌入用來作為自定義類圖標的文件。下面是一個IconFile的例子:

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

    }


    [Inspectable]

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

    [InstanceType]

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

    程序代碼 程序代碼
    [InstanceType("package.className")]


    [NonCommittingChangeEvent]

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

    [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方法獲取它的值了。Listing 11 和 12中的例子定義了兩個樣式,分別為borderColor 和fillColor,它們的數據類型都是uint。當類初始化的時候這兩個樣式就會在標簽中被設定。代碼中覆寫了updateDisplayList函數,用自定義的樣式畫了一個圓形邊框并將其填充。

    現在你應該會有這樣的感覺了:“喔,現在我知道在哪里可以使用它們了”或者“嗯,我想我會在新的項目中嘗試使用這些元數據標簽”。如果你沒有,那么你可能需要回過頭去再看一遍這篇文章。OK,我想說的是Adobe Flex小組提供給我們的元數據標簽不只是非常的強大,可以讓我們擴展或自定義我們要做的東西,而且它還非常易于使用。通過使用它們,僅僅幾行代碼就可以完成一大堆事情。如果不使用這些標簽,你會發(fā)現在Flex 2中實現一些東西是很辛苦的。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲高清无在码在线电影不卡| 亚洲AV综合色区无码二区偷拍| 国产精品久久久久AV| 国产亚洲一二三区精品| 国产在线亚州精品内射| 毛片免费观看天天干天天爽| 麻豆国产AV剧情偷闻女邻居内裤| 国产SM重味一区二区三区| 狠狠综合久久AV一区二区| 无码国产偷倩在线播放| 中文无码久久精品| 日本一区二区三区免费播放视频站 | 深夜精品免费在线观看| 免费无码无遮挡裸体视频在线观看| 日日碰狠狠添天天爽无码| 蜜芽久久人人超碰爱香蕉| 亚洲人成无码网站久久99热国产| 色欲国产精品一区成人精品| 久亚洲一线产区二线产区三线产区 | 日韩免费无砖专区2020狼| 午夜不卡欧美AAAAAA在线观看| 中文字幕人妻系列人妻有码| 夜夜添狠狠添高潮出水| 双乳奶水饱满少妇呻吟免费看| 亚洲AV成人无码精品电影在线| 亚洲成A人片在线观看的电影| 国产欧美日韩A片免费软件| 免费无码又爽又刺激高潮虎虎视频| 亚洲AV中文无码乱人伦在线咪咕| 久久天天躁夜夜躁狠狠85| 少妇被黑人到高潮喷出白浆 | 国产成人精品中文字幕| 欧美性大战久久久久XXX| 欧美不卡无线在线一二三区观| 丝袜人妻一区二区三区网站| 亚洲一区二区三区影院| 亚洲人成网网址在线看| 亚洲av男人电影天堂热app| 婷婷成人丁香五月综合激情| 精品国产人妻一区二区三区久久 | 在线高清免费不卡全码|