Flex程序開發(fā)心得小結(jié)
更新時間:2008年04月13日 18:29:37 作者:
和Flash的開發(fā)環(huán)境相比,F(xiàn)lex提供的組件庫確實很誘人,但由于功能太全面,導(dǎo)致程序的體積大,有時候使用不當(dāng),可能會影響程序運(yùn)行效率。
在Flex的幫助手冊中,有一個專門的章節(jié)講了程序的優(yōu)化,下面是我結(jié)合幫助作的幾點(diǎn)小結(jié):
1、避免容器的多級嵌套,減少相對尺寸、相對定位的使用。
在使用百分比來給容器內(nèi)的元件定尺寸,一旦容器中的任何一個元件的位置和尺寸變化,都會引發(fā)容器對所有子級的重定位動作。如果嵌套的級別很深,這個計算量會很大。
2、盡量使用輕量級的容器
Canvas是體積最小的容器,它只支持絕對定位。很多時候,都可以使用它來代替HBOx和VBox。另外,Canvas也是我們編寫自定義容器性質(zhì)組件的一個首選。它具有容器的基本功能,利于擴(kuò)展。
3、避免使用大體積的組件,比如DataGrid、AdvancedDataGrid
大個子組件的功能強(qiáng)大,但開銷也是非常大的。由于功能的復(fù)雜性,使得皮膚、樣式、itemRenderer的實現(xiàn)都格外復(fù)雜。
4、處理數(shù)據(jù)時多用分頁的方式
在使用數(shù)據(jù)類型控件時,盡量減少數(shù)據(jù)一次的顯示量。比如TileList,它會把數(shù)據(jù)一次性全部創(chuàng)建,不管是不是需要顯示,這樣很浪費(fèi)資源。 ViewStack 、TabNavigator等在處理元件時,并不是一次創(chuàng)建,只要元件在第一次被顯示時才創(chuàng)建,這樣,就避免的不必要的開銷。
5、setStyle和styleName
Flex 組件的皮膚都是可視化元件,組件在自身初始化時,會使用當(dāng)前的樣式比如styleName完成所有皮膚元件的繪制。如果我們在運(yùn)行期間通過setStyle修改了組件的樣式,組件的尺寸、位置就會作相應(yīng)調(diào)整。聯(lián)系到第一條,如果組件位于一個層級很深的容器中,也會有一個大的計算量。
1、避免容器的多級嵌套,減少相對尺寸、相對定位的使用。
在使用百分比來給容器內(nèi)的元件定尺寸,一旦容器中的任何一個元件的位置和尺寸變化,都會引發(fā)容器對所有子級的重定位動作。如果嵌套的級別很深,這個計算量會很大。
2、盡量使用輕量級的容器
Canvas是體積最小的容器,它只支持絕對定位。很多時候,都可以使用它來代替HBOx和VBox。另外,Canvas也是我們編寫自定義容器性質(zhì)組件的一個首選。它具有容器的基本功能,利于擴(kuò)展。
3、避免使用大體積的組件,比如DataGrid、AdvancedDataGrid
大個子組件的功能強(qiáng)大,但開銷也是非常大的。由于功能的復(fù)雜性,使得皮膚、樣式、itemRenderer的實現(xiàn)都格外復(fù)雜。
4、處理數(shù)據(jù)時多用分頁的方式
在使用數(shù)據(jù)類型控件時,盡量減少數(shù)據(jù)一次的顯示量。比如TileList,它會把數(shù)據(jù)一次性全部創(chuàng)建,不管是不是需要顯示,這樣很浪費(fèi)資源。 ViewStack 、TabNavigator等在處理元件時,并不是一次創(chuàng)建,只要元件在第一次被顯示時才創(chuàng)建,這樣,就避免的不必要的開銷。
5、setStyle和styleName
Flex 組件的皮膚都是可視化元件,組件在自身初始化時,會使用當(dāng)前的樣式比如styleName完成所有皮膚元件的繪制。如果我們在運(yùn)行期間通過setStyle修改了組件的樣式,組件的尺寸、位置就會作相應(yīng)調(diào)整。聯(lián)系到第一條,如果組件位于一個層級很深的容器中,也會有一個大的計算量。
相關(guān)文章
基于Socket的網(wǎng)絡(luò)連接 Flex與.NET互操作(一)
Flash/Flex也支持基于Socket的網(wǎng)絡(luò)連接 ,服務(wù)器端可以是C++,VB,C#,Java等任一語言開發(fā)。監(jiān)聽一個網(wǎng)絡(luò)端口便可以接收到Flash/Flex開發(fā)的客戶端的連接。2009-06-06使用asx3m與xstream配合解決flex與java利用httpservice傳遞xml數(shù)據(jù)問題
過年期間抽空在弄flex前端對象與后端java對象利用httpservice交互的問題。比如前端需要user list數(shù)據(jù),構(gòu)造了flex user object類。2009-02-02讓Flex Builder 3.0與Eclipse3.4整合起來
Flex Builder 3.0 For Eclipse 3.3 安裝方法2009-02-02Flex與.NET互操作 使用HttpService、URLReqeust和URLLoader加載/傳輸數(shù)據(jù)
在前兩篇文章中分別介紹了Flex與.NET的WebService之間的數(shù)據(jù)交互通信知識,本文將介紹另外一種加載數(shù)據(jù)以及發(fā)起請求的方式。2009-06-06