2009-12-17 17 views
0

假設我有一個這樣的ViewStack:Flex中低開銷動態選項卡/ ViewStack?

<mx:ViewStack id="s" left="5" right="5" bottom="5" top="0" width="100%" height="100%" creationPolicy="all" minHeight="0"> 
    <mx:Repeater id="repeater" dataProvider="{dp}" height="100%" width="100%" minHeight="0"> 
     <mx:Box id="bx" label="{repeater.currentItem.label}" width="100%" height="100%" minHeight="0"> 
      <mx:Label minHeight="0" width="100%" height="100%" label="bob" /> 
     </mx:Box> 
    </mx:Repeater> 
</mx:ViewStack> 

由於堆棧中的大量物品(每個都具有大量的面板,數據綁定等),這變得非常緩慢。無論viewStack本身的creationPolicy如何,Repeater似乎都會觸發所有孩子的創建。

是否有現成的解決這個問題的效率?我可以想出一些使用自定義組件解決問題的方法,但我想知道是否有一種現成的解決方案,如果內部值真的需要動態(由ArrayCollection支持)。

回答

2

假設你所有的堆疊視圖,除了在其中顯示的一些具體的數據相同的一個可能的解決辦法是拋棄則ViewStack並設置所有控件綁定到一個數組集合,那麼你會用它來改變任何控制你的viewstack可以改爲更新你的數組集合。

+0

是的,這聽起來像一個ArrayCollection持有很多的DisplayObject。這通常是不好的,因爲DisplayObjects包含很多開銷。如果可能,只將數據本身存儲在ArrayCollection中,並使用渲染器作爲組件。這是更高效的,因爲渲染器被重用。 – CookieOfFortune 2009-12-17 22:55:11

0

使用列表與itemRenderer的嘗試。中繼者因可怕的表現而臭名昭着。