starling性能優化

在項目開發的過程當中總結了一下starling的性能優化方案:算法

1.     不要頻繁的讀取顯示對象的寬高:調用寬高屬性時會調用顯示對象的getBounds()方法,該方法會遍歷該對象的全部子對象,從新計算寬高。在頻繁使用寬高屬性時,如沒有特殊須要,最好把寬高保存到變量中,使用變量保存的值替代直接讀取寬高屬性。數組

2.     扁平化的Spritesstarling在每一幀都會遍歷全部對象檢查它們的狀態,上傳它們的數據到GPU進行從新渲染,調用Sprite的flatten()方法後,GUP便不會對該對象進行從新上傳渲染,當你須要更新這個顯示對象時,能夠調用它的unflatten()方法。性能優化

3.     QuadBatchQuadBatch類是一個扁平化的容器,你每在容器上add一個對象時,它都會派發一個"ADDED"和"ADDED_TO_STAGE"事件,當你有不少對象時,也是一個不小的開銷,特別時當你使用的紋理都是來自同一個紋理圖集時QuadBatch會更加高效,它只能添加Image, Quad, 或 QuadBatch類的實例。性能

4.     減小事件派發:starling的顯示對象在add在舞臺上的時候都會派發一個"ADDED"和"ADDED_TO_STAGE"事件,移除的時候也是會派發"REMOVEED"和" REMOVEED _TO_STAGE"事件,不少時候這些事件對咱們都沒有意義,咱們能夠修改starling的顯示對象或者自定義一個顯示對象,重寫它的addChild方法,將事件派發去掉,減小沒必要要的開銷。字體

5.     清理完全:在銷燬一個對象時,保證將對象及子對象銷燬完全,並把事件移除乾淨,starling中頻繁建立對象沒有銷燬就會形成資源超過上限的錯誤,形成程序崩潰。優化

6.     混合模式:若是有徹底不透明的矩形紋理,咱們可讓GPU禁用那些紋理混合。這對於大背景圖像特別有用。設置object.blendMode = BlendMode.NONE;編碼

7.     touchEnable不可點擊:給不須要接受事件的對象設置touchEnable= false;減小沒必要要的時間監聽和派發。spa

8.     使用位圖字體:使用位圖字體替代系統字體,性能將成倍提升。命令行

9.     紋理圖集:starling採用了畫家算法來處理顯示列表,若是從一個單一的圖集加載全部這些紋理,Starling就能夠在一次調用中完成全部的繪製。starling中支持最大2048*2048大小的紋理圖集。對象

10.  不可見放棄渲染:當顯示對象不在屏幕內或者不在可視範圍內,咱們能夠將其移除或者設置visible屬性爲false,這樣能夠極大的減小GPU渲染的壓力,提升性能。

11.  Image替代Button:在沒必要要的狀況下,儘可能使用Image不要使用Button,前者在渲染時的速度和開銷都要優於後者。

12.  基本的AS3性能優化:使用for替代for each;不要在for循環中頻繁建立對象;將數組的length屬性賦值到變量上使用,而不是頻繁調用等AS3的良好編碼習慣。

13.  使用ATF紋理:這個格式很是強大,能夠用命令行把一個PNG文件轉換爲ATF文件(包含針對不一樣設備的文件類型Android (ETC1), iOS(PVRTC) , Windows and MacOS (DXT))。Flash Player和AIR會自動根據運行平臺選擇合適的格式,ATF有着更快的渲染速度、更小的內存佔用、更快的上傳速度和更小的應用體積等優勢,強力推薦使用。

(注:紅色爲重要優化方案)

相關文章
相關標籤/搜索