版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、重寫組件一、為什么要重寫組件一、為什么要重寫組件1、在FLEX已有組件無法滿足業(yè)務(wù)需求,或是需要更改其可視化外觀等特性時(shí),直接進(jìn)行繼承擴(kuò)展。舉例,繼承BUTTON組件的長文本卻不自動換行的自定義控件。2、為了模塊化設(shè)計(jì)或進(jìn)一步重用,需要對FLEX組件進(jìn)行組合。比如一個(gè)包括TEXTAREABUTTON的復(fù)合控件。二、重寫組件需要經(jīng)常換位思考的三個(gè)角色二、重寫組件需要經(jīng)常換位思考的三個(gè)角色1、作為重寫組件的使用者,有哪些需求。比如需要在MX
2、ML標(biāo)簽和AS代碼中暴露哪些屬性及對應(yīng)默認(rèn)值、事件和事件的處理邏輯。2、重寫組件一般需要使用FLEX原有組件,要站在原有開發(fā)者的角度了解設(shè)計(jì)規(guī)則。3、作為重寫組件的設(shè)計(jì)者,在滿足需求的情況下盡量做到可復(fù)用、低耦合易擴(kuò)展等設(shè)計(jì)原則,讓新組件像FLEX原組件一樣好用。三、重寫組件三、重寫組件AS方式和方式和MXML方式的采用規(guī)則方式的采用規(guī)則1、MXML文件和AS文件最后都會被編譯成AS類,只不過MXML編譯速度稍慢一些2、如果MXML和A
3、S都能完成的一個(gè)簡單組件,MXML更容易被創(chuàng)建和控制布局3、當(dāng)要覆蓋組件的某些方法時(shí)只能用AS方式4、創(chuàng)建一個(gè)直接繼承UIComponent的子類時(shí)只能用AS5、創(chuàng)建非可視化組件比如Fmatter、validat、Effect……時(shí),只能用AS6、要為組件添加日志功能時(shí),只能用AS.四、四、AS方式重寫組件常規(guī)步驟方式重寫組件常規(guī)步驟1、如果有必要,為組件創(chuàng)建所有基于標(biāo)記(tagbased)的皮膚(skins)2、創(chuàng)建Action類文件
4、⑴從一個(gè)基類擴(kuò)展,比如UIComponent或者其他的組件類⑵指定使用者能夠通過MXML標(biāo)記進(jìn)行設(shè)置的屬性⑶嵌入(Embed)所有的圖片和皮膚文件,文件大小盡可能?、葘?shí)現(xiàn)構(gòu)造器,可以設(shè)置屬性和樣式的缺省值,或者初始化數(shù)據(jù)結(jié)構(gòu),比如數(shù)組⑸根據(jù)需要,確定是否覆蓋以下五個(gè)方法:(a)UIComponent.createChildren()方法,創(chuàng)建組件的子組件(b)mitProperties()方法,提交組件所有的屬性變化,設(shè)置measure
5、()方法可能使用的屬性值。絕大多數(shù)情況下,都是對影響組件如何在屏幕上顯示的屬性使用這個(gè)方法(c)UIComponent.measure()方法,設(shè)置組件的缺省size(measuredWidth、measuredHeight)和缺省的最小size(measuredMinWidth、measuredMinHeight)(d)UIComponent.layoutChrome()方法,用于定義容器的邊框區(qū)域和確定邊框區(qū)域的位置,以及確定要在邊
6、框區(qū)域中顯示的附加元素。例如,Panel容器使用layoutChrome()方法定義panel容器的title區(qū)域,這個(gè)區(qū)域用來包含title文本和close按鈕。通常,使用RectangularBder類來定義容器區(qū)域的邊框,而不是用圖片資源去包圍組件。比如創(chuàng)建一個(gè)RectangularBder對象,然后在重載的createChildren()方法中將其作為一個(gè)屏幕上畫出它⑷組件的parent屬性設(shè)置為對父容器的引用⑸樣式(style
7、)設(shè)置⑹組件分發(fā)preinitialize事件⑺調(diào)用組件createChildren()方法⑻調(diào)用invalidateProperties(),invalidateSize(),invalidateDisplayList()失效方法,F(xiàn)LEX將在下一個(gè)“渲染事件”(renderevent)期間對相應(yīng)的commitProperties(),measure(),updateDisplayList()方法進(jìn)行調(diào)用。這個(gè)規(guī)則唯一例外就是當(dāng)用戶設(shè)
8、置組件的height和width屬性時(shí)Flex不會調(diào)用measure()方法。也就是說,只有當(dāng)組件的explicitWidth和explicitHeight屬性是NaN時(shí)Flex才會調(diào)用measure()方法。⑼組件分發(fā)initialize事件。此時(shí)組件所有的子組件初始化完成,但組件尚未更改size和布局,可以利用這個(gè)事件在組件布局之前執(zhí)行一些附加的處理⑽在父容器上分發(fā)childAdd事件⑾在父容器上分發(fā)initialize事件⑿在下一
9、個(gè)“渲染事件”(renderevent)中Flex執(zhí)行以下動作:a.調(diào)用組件的commitProperties()方法b.調(diào)用組件的measure()方法c.調(diào)用組件的layoutChrome()方法d.調(diào)用組件的updateDisplayList()方法e.在組件上分發(fā)updateComplete事件⒀如果commitProperties(),measure(),updateDisplayList()方法調(diào)用了invalidatePr
10、operties(),invalidateSize(),invalidateDisplayList()方法,則Flexh會分發(fā)另外一個(gè)render事件⒁在最后的render事件發(fā)生后Flex執(zhí)行以下動作:a.設(shè)置組件visible屬性使其可視b.組件分發(fā)creationComplete事件,組件的大小(size)和布局被確定,這個(gè)事件只在組件創(chuàng)建時(shí)分發(fā)一次c.組件分發(fā)updateComplete事件。無論什么時(shí)候,只要組件的布局(lay
11、out),位置,大小或其它可視的屬性發(fā)生變化就會分發(fā)這事件,然后更新組件來正確地顯示。2、為什么使用失效機(jī)制(invalidationmechanism)一種情況是,當(dāng)設(shè)置了組件的多個(gè)屬性后,比如Button控件的label和icon屬性,我們需要所有屬性被設(shè)置后一次性執(zhí)行commitProperties()measure()updateDisplayList()方法,而不是設(shè)置過label屬性后執(zhí)行一遍這些方法,然后在設(shè)置icon屬性
12、后又執(zhí)行一次這些方法。另一種情況是幾個(gè)組件同時(shí)更改了它們的字體大小。程序更改字體大小的執(zhí)行速度大大快于Flex更新應(yīng)用的速度,因此要在確定最終更改字體之后才開始更新布局。另外,F(xiàn)lex需要協(xié)調(diào)布局操作以消除任何冗余過程,而不是在每個(gè)組件更新它的字體大小之后都執(zhí)行一次布局操作。Flex使用“失效機(jī)制(invalidationmechanism)”來同步組件的更改。Flex用一系列方法的調(diào)用,比如在setter方法內(nèi)監(jiān)控一個(gè)變更變量來標(biāo)記組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于Flex的蒙古文組件技術(shù)研究.pdf
- 重寫函數(shù)
- 重寫的故事
- 重寫翻譯史
- 重寫年終總結(jié)
- 重寫高考作文1
- 覆蓋與重寫的區(qū)別
- 重寫cpr5-3
- 重寫log4j
- 實(shí)驗(yàn)10 繼承組合和重寫
- flex的web應(yīng)用系統(tǒng)重構(gòu)
- 生成json格式的重寫tostring方法
- 在flex中使用樣式方法
- 實(shí)驗(yàn)六包的使用與方法重寫
- 重寫url必須掌握正須表式
- 探究龐德對《華夏集》的重寫.pdf
- 偽靜態(tài) url重寫 iis配置的問題
- 基于重寫邏輯的snp系統(tǒng)模型檢測
- 應(yīng)用FLEX技術(shù)構(gòu)建RIA系統(tǒng).pdf
- 注重寫字教學(xué),推進(jìn)素質(zhì)教育
評論
0/150
提交評論