flex 自定義元件的編寫

2022-01-20 22:21:38 字數 2200 閱讀 8264

使用flex也很久了,也改過別人寫的flex自定義元件,但是就是沒有系統的研究下flex元件的編寫步驟,和要注意的東西,在這裡我參照一本書中的例子,好好的理解下,也為了鞏固下自己對flex的理解! 

1,重寫乙個元件系統依次呼叫constructor(構造方法)-->createchildren()-->commitproperties()==>measure()==>updatedisplaylist() ; 

a,constructor構造方法,初始化屬性,預設值 在這個方法中使用最好。 

b,createchildren() 建立子物件,在元件中新增子物件。是使用addchild方法新增子物件 

c,commitproperties 用在處理屬性值和更新。(多個屬性值更新後統一處理入口和單值多次修改後處理入口) 

d , measure()設定元件的預設大小(以便flex布局管理器能正確知道該元件的大小,給其分配適當空間) 

e,updatedisplaylist()用來重繪元件,子物件布局邏輯等 

2,新增自定義元件實際上就是將乙個基本的元件的組合起來,這樣的情況下就必須要重寫createchildren() 和 updatedisplaylist()方法 

當自定義元件要對屬性的變化作出反應的時候必須要重寫commitproperties()方法(觸發呼叫這個方法的是invalidateproperties) 

當自定義的元件和基類元件大小不一致的情況下就要呼叫measure 保證正確的大小顯示。(呼叫invalidatesize方法) 

當元件需要調整子物件全域性顯示邏輯,重寫updatedisplaylist,呼叫invalidatedisplaylist 

commitproperties   measure 和 updatedisplaylist 都有自己的用處 

在下面寫個例子 乙個button 和 textarea 組合的自定義元件 

package cn.tsoft

private var text_mc:textarea;

private var mode_mc:button;

private var btextchanged:boolean =false;

private var _text:string="modeltext";

public function set text(t:string):void

[bindable(event="textchanged")]

public function get text():string

override protected function createchildren():void

if(!mode_mc)

}//處理有子元件派發的時間

private function handlechangeevent(eventobj:event):void

private function handleclickevent(eventobj:event):void

override protected function commitproperties():void

}/**

* 組建的預設寬度是文字寬度加上按鈕的寬度

* 元件的預設高度由按鈕的高度決定

*/ override protected function measure():void

private var _textplacement:string="left";

public function set textplacement(p:string):void

[bindable(event="placementchanged")]

public function get textplacement():string

/*** button控制項的尺寸是button上的label文字尺寸加上10畫素的邊框區域

* textarea控制項的尺寸是元件的剩餘區域,textarea的位置取決於textplacement屬性的設定

* **/

override protected function updatedisplaylist(unscaledwidth:number, unscaledheight:number):voidelse

graphics.linestyle(1,0xffff00,1.0);

graphics.drawrect(0,0,unscaledwidth,unscaledheight);}}

}

flex 自定義元件的編寫

使用flex也很久了,也改過別人寫的flex自定義元件,但是就是沒有系統的研究下flex元件的編寫步驟,和要注意的東西,在這裡我參照一本書中的例子,好好的理解下,也為了鞏固下自己對flex的理解!1,重寫乙個元件系統依次呼叫constructor 構造方法 createchildren commit...

flex自定義元件的編寫步驟

1,重寫乙個元件系統依次呼叫constructor 構造方法 createchildren commitproperties measure updatedisplaylist a,constructor構造方法,初始化屬性,預設值 在這個方法中使用最好。b,createchildren 建立子物件...

Flex自定義元件

使用mxml標籤定義 主檔案main1.mxml 注 xmlns mycomp 自定義命名空間其實很類似於包的概念用來管理元件的。實際當中最好把自己的元件檔案分資料夾管理。元件定義mycomp1.mxml 濟南威海 煙台注 元件的檔名就對應著將來使用時的mxml標籤名,根標籤就是你用來擴充套件的父類...