使用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標籤名,根標籤就是你用來擴充套件的父類...