flex small tips 小結

1.避免容器的深層嵌套(因爲每個容器都會對其子容器進行計算和調整,一般建議HBox,VBox最好不要超過3層,但對於複雜系統這個很難避免)
2.對於容器和空間的位置和尺寸儘量採用絕對座標和硬編碼。(減少Flash Player深層次的嵌套計算)

3.合理恰當的使用Grid容器,對於能用普通容器如HBox,VBox實現的儘量不要採用Grid(Grid嵌套層次深)

合理使用Array和ArrayCollection及DataGrid和AdvancedDataGrid,前者滿足要求就不要使用後者

合理使用bindable,濫用導致內存泄漏

4.避免使用重複、冗餘的容器嵌套,如:
 1) 在Panel,Application中添加一層VBox,Panel,Application本來就是繼承於VBox的,添加無謂的VBox只能降低你係統的性能。
 2) 對於自定義的容器減少重複多餘的父容器,比如:
  <mx:VBox backgroundColor=" #FFCCCC" borderStyle=" solid">
   <myComponent xmlns=" *" />
  </mx:VBox>
 你完全可以採用下面的寫法,對於myComponents可能它本身就是VBox
  <myComponent xmlns=" *" backgroundColor=" #FFCCCC" borderStyle="solid" />
5.延遲實例化導航類容器(Deferred Instantiation Navigator Containers)
   如ViewStack, Accordion, TabNavigator等,本身就提供了延遲實例化的功能,你只需要修改其creationPolicy='auto'即可,它將只實例化第一個要顯示的子控件,其餘的將在需要的時候實例化。
6.對於flex的效果(Effects)要做到儘量平滑(Smoothly),比如延長它的持續時間(duration),避免使用bmp格式的圖片作背景。
7.對於DataGrid的複雜ItemRenderer,儘量用Canvas而不是VBox or HBox
8.如果DataGrid的ItemRenderer是ComboBox等,儘量用ItemEditor而不是ItemRenderer,只有當選中的cell纔會顯示其Renderer(避免一次性把所有的cell Renderer都畫出來)
9.記得隨時Remove 沒有用的Listener或採用弱引用,這個我在事件機制中提到過(URL...); null不用的變量和數組。
10.對於大批量的數據採用需要的時候去取或者分頁
11.提前聲明頻繁使用的變量,如:
var l:int=list.length;
var w:int = stage.stageWidth;
for(var i : int=0; i < l; i++){
 list[i].x = w -100;
}
12.這樣也能提高Flex的性能,可能很多人都會不屑,但至少對於Flex來講它能減少不必要的計算,改善性能,另外和代碼組織有關的建議,如:
 1) 系統性的常量寫在一個常量類裏頭並用const關鍵字,一些ItemRenderer代碼儘量獨立成一個文件而不是直接到處都寫
 2) 不要在界面元素中引用一大串的parent.parent.parent...,一旦界面重新組織將給你帶來很大麻煩。如果你用Cairngorm框架,那麼就應該用ViewHelper,儘量的鬆耦合你的代碼。
13.如果你用FDS,那麼儘量用Remote Object 而不是Http Service or Web Service,因爲前者的效率最高
14.對你的系統進行壓力測試,Adobe有一個測試工具,叫Flex Stress Testing Framework
(rul:http://labs.adobe.com/wiki/index.php/Flex_Stress_Testing_Framework).
它能提供對RPC中的RTMP, AMF,HTTP測試,一般的商業測試軟件不支持前兩者的測試,
該軟件完全免費,你可以到Adobe官網上下(URL: http://download.macromedia.com/pub/labs/flexstress/flex_stressfw_p2_060407.zip)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章