2011-10-27 37 views
1

這是關於優化技術的一般性問題,請大家願意重寫我的大部分代碼,因爲我正在將它移到一個庫中。Flex navigator.push查看slow

我的問題不像我使用減少cpu /內存佔用量的方法那樣適用於靈活的性能,因此在視圖內部時性能很快。

我的問題是,這似乎慢navigator.pushView,我呼籲creationComplete我的初始化函數的觀點,但我把它分解,所以我的init的樣子:

private function init() : void { 
    doStuff1(); 
    doStuff2(); 
    doStuff3(); 
} 

我能如何讓視圖平滑?這是在移動設備上。

我已經考慮過使用定時器來延遲init函數內部的所有代碼,以便讓我們說前3秒沒有任何事情發生,並且視圖具有它需要的所有幀,但這看起來不正確。

建議將不勝感激!

謝謝

回答

3

性能真的取決於你在那些「doStuff()」方法做什麼。有幾件事要考慮:

1)在creationComplete()執行的時候;該視圖已經呈現一次。你是否在做任何會導致事物再次呈現的東西?更改樣式以及兒童組件的許多屬性將導致該孩子重新呈現,並且通常會導致視圖組件。

很多人使用creationComplete作爲構造函數,實際上,這是放置「構造函數樣式」代碼的最糟糕的地方。相反,您應該考慮對大多數內容使用預初始化,或者如果需要在子組件上設置屬性,則需要初始化。

2)viewActivate在轉換髮生後執行。所以,也許你應該考慮將代碼移出creationComplete並移入viewActivate。更多關於mobile view's lifecycle的信息在這裏。

+0

viewActivate可能吧!我會嘗試 - 謝謝你的信息 - 真的很感激! –

+0

我也有一個嵌套問題!很多嵌套組(可換膚容器/ vgroup,hgroup等)。 –

+0

爲了提高性能,我建議您儘可能少地使用容器。對於你使用的每個組;這是另一種需要運行的佈局算法。 – JeffryHouser