AS3 0建立自定義元件

2021-08-23 11:37:12 字數 1389 閱讀 1651

介紹使用as 3.0來建立自定義元件

每個flex 元件都是乙個as 類,不管它是否是乙個ui控制器,乙個容器或者一些其它型別的元件。在mxml中能建立的都能在as中建立。有一些可以用as做到,但是mxml做不到的。

建立乙個as元件的步驟和你建立任何的as類的步驟非常類似。首先,決定你的新類要擴充套件什麼父類。然後,決定你的類需要宣告什麼屬性。下一步,決定你需要實現的方法。你也可能需要宣告你的元件傳送的事件。如果你的元件是乙個可視類,你很可能需要覆蓋 createchildren() 和 updatedisplaylist()方法,因為它們是flex 元件用來建立和布局元件的任何子元素的。

建立類的結構

通常根據你需要的功能來選擇繼承什麼超類。

覆蓋createchildren()方法

當用mxml建立乙個元件,可以使用標準的mxml標籤新增元素到元件中。當你用as建立元件時,這些標籤對你沒用,可以建立你元件的子對像,你需要覆蓋你元件父類的createchildren()方法,createchildren()方法會在flex元件初始化期間被呼叫。

初始化次序如下:

constructor-構造器

createchildren()-建立子對像

commitproperties()-提交屬性

measure()-測量

updatedisplaylist()-更新顯示列表

後面四個方法在mx.core.uiobject裡實現,事實上用as3.0建立的元件都需要覆蓋createchildren()方法和updatedisplay()方法。

當你需要設定屬性依賴其它已設定的屬性時,你需要覆蓋commitproperties(),或者你想要明確地傳遞在建立新的元件時的屬性時,所有 子對像建立完成後,commitproperties()方法用來設定所有傳遞進來的屬性。在等待commitproperties()被呼叫之前,你需 要知道這些子對像已經成功例項化在它們的屬性設定之前。

如果必要的話,measure()方法是使用你能夠手動計算所有建立的子對像的寬和高,這個方法經常在建立乙個新容器的唯一布局規則時需要被覆蓋。

明白chrome(鉻)和rawchildren(原始子對像)

flex容器有兩個獨特的部分:

布局區域:子對像繪製的地方

鉻:由其它所有元素組成的,像邊框,背景,邊緣,滾動條,頭部,腳部等等。

在panel類中,標題條是乙個chrome。

flash.display.displayobjectcontainer 基礎類在繪製子對像和鉻之間沒有什麼區別,都可以容易地使用 getchildat 和 numchildren屬性。為了訪問到所有子元素,你需要使用rawchildren屬性。同樣地,新增元素到鉻,它們需要被新增到 rawchildren 屬性。如果你想新增元素到標題欄,你必須使用rawchildren.addchild()。

AS 3 0 建立自定義元件

每個flex 元件都是乙個as 類,不管它是否是乙個ui控制器,乙個容器或者一些其它型別的元件。在mxml中能建立的都能在as中建立。有一些可以用as做到,但是mxml做不到的。建立乙個as元件的步驟和你建立任何的as類的步驟非常類似。首先,決定你的新類要擴充套件什麼父類。然後,決定你的類需要宣告什...

AS3 0中自定義matedata

metadata就是元資料,反應乙個類本質的屬性,可以通過describetype obj 來得到反應該物件的xml.要自定義元資料,如 mymatedata 1 package 8public function geta void11 12 describetype new myclass 返回 ...

自定義元件

myedittext 清除輸入的資料 setcompunddrawable 設定edittext ontouchevent ondraw 作用 繪製view顯示的內容,由系統自動呼叫 常用類 paint,canvas invalidate,postinvalidate 貪吃蛇原理 改變集合中的資料,...