2011-11-24 41 views
1

我的Flex應用程序中有一個Accordion組件,效果很好,但是我發現它的行爲有點小故障。Flex中奇怪的手風琴組件行爲

當其中一個菜單打開時,它顯示一個白色矩形,當它完全加載時,它會顯示內容。 但是我想在加載時顯示沒有這個「白色」矩形的整個內容。

例如:

圖片1:我的手風琴準備使用

Accordion ready

圖片2:我想打開另一個子菜單,因此,儘管它的開幕,一白色的矩形顯示(我真的很快採取截圖)

White rectangle

圖片3:最近打開子菜單滿載

Submenu loaded

這真的很難用幾句話來解釋,但我認爲有人能理解我。你可以幫我嗎?謝謝!

編輯

這裏是我的源代碼:

<mx:Accordion id="accordion" width="100%" height="90%" verticalGap="0" horizontalGap="0" creationPolicy="all"> 
    <mx:Form id="menu1" label="Vehículos" width="100%" height="100%"> 
     <mx:Grid> 
      <mx:GridRow> 
       <mx:GridItem> 
        <mx:Image source="./assets/cars/car1.png"/> 
       </mx:GridItem> 
       <mx:GridItem> 
        <mx:Image source="./assets/cars/car2.png"/> 
       </mx:GridItem> 
      </mx:GridRow> 
      <mx:GridRow> 
       <mx:GridItem> 
        <mx:Image source="./assets/cars/car3.png"/> 
       </mx:GridItem> 
       <mx:GridItem> 
        <mx:Image source="./assets/cars/car4.png"/> 
       </mx:GridItem> 
      </mx:GridRow> 
     </mx:Grid> 
    </mx:Form> 
    <mx:Form id="menu2" label="Señales" width="100%" height="100%"> 
     <mx:Grid > 
      <mx:GridRow> 
       <mx:GridItem> 
        <mx:Image source="./assets/signals/X01A20.png"/> 
       </mx:GridItem> 
       <mx:GridItem> 
        <mx:Image source="./assets/signals/X01A21.png"/> 
       </mx:GridItem> 
      </mx:GridRow> 
      <mx:GridRow> 
       <mx:GridItem> 
        <mx:Image source="./assets/signals/X01B10.png"/> 
       </mx:GridItem> 
       <mx:GridItem> 
        <mx:Image source="./assets/signals/X02A01.png"/> 
       </mx:GridItem> 
      </mx:GridRow> 
      <mx:GridRow> 
       <mx:GridItem> 
        <mx:Image source="./assets/signals/X01A01.png"/> 
       </mx:GridItem> 
      </mx:GridRow> 
     </mx:Grid> 
    </mx:Form> 
</mx:Accordion> 

回答

1

你所描述是Flex內的優化所致。

有關這個主題的

白色畫面顯示,由於事實,你正試圖在其他選項卡,以顯示組件中所呈現的過程,這種渲染需要多一點時退房livedocs太長。 這就是爲什麼你會遇到這種呃逆。

雖然不建議將creationPolicy設置爲all,但這可能會解決您的問題。

請記住,你應該卻從未把creationPolicy所有,但看起來像預加載您的資產,對象池,其他的解決方案..

編輯

爲什麼在你的網格組件一個額外的表單容器?
我相信這就是爲什麼將creationPolicy設置爲all並不適合你的例子的原因。

提高性能的一種方法是最小化嵌套級別,有效地嘗試刪除多餘的過時表單容器。

其次,使用時,您的項目的定位將自動計算每次,這需要一點點時間來呈現。你的元素的絕對定位很可能是一個進一步的優化。

第三,嘗試使用某種資產加載策略,在運行時將某些緩存中的png圖像加載到您的應用程序中。 然後您的對象將被存儲在內存中,並且訪問速度應該更快。

+0

感謝丹尼斯,但我怎麼可以預載我的資產?我應該學習哪些活動?你能編輯你的帖子來解釋我嗎?非常感謝:) –

+0

無論如何,我嘗試在我的Accordion組件中設置'creationPolicy =「all」',但它不起作用。 –

+0

您將什麼類型的組件添加到標籤中?你能展示更多的代碼嗎? –

-1

這是因爲Flex並未創建加載手風琴的所有孩子。它創建它們按需,可以這麼說。所以在你第一次看第二個菜單之前,它還沒有準備好,所以它在你化妝時要求你坐下一個座位,你看到了那個白色的屏幕,儘管這並不意味着你會看到它:)

丹尼斯解釋所有有也無妨,所以我沒有一點老毛病又犯了:P