2011-07-07 60 views
1

我創建了包含一個頭(HBox中)和列表控件的標題下的自定義控件被jurked上創建時間。我可以使用標頭點擊事件打開並關閉列表(含義list.height = 0和list.height = 200)。最初,列表將處於關閉狀態(高度= 0)。當我們第一次打開它。這需要太多時間。對於連續打開相同的列表看起來更順暢(我想這是因爲itemrenderer被重用)。我想第一次順利地打開清單。任何一個請幫助名單已在柔性

我已經創建了自己的列表控件渲染器,內部包含一個5組合框一個HBox中

+0

你應該表現出一些代碼。你爲什麼使用Flex 3?你爲什麼要做高度= 0和高度= 200? visible = false和visible = true不夠好? –

+0

這聽起來像你試圖重新創建一個DropDownList。如果是這樣;爲什麼?此外,無法在沒有看到您的代碼的情況下提供任何幫助。 – JeffryHouser

回答

0

這聽起來像你再造一個下拉列表,但原因它加載的時間太長您的列表第一次是因爲它沒有創建任何項目渲染器。列表控件只能在任何給定時間創建儘可能多的項目渲染器。因爲你有高度= 0沒有項目創建渲染器開始,所以改變高度第一次強制所有項目渲染器的創建和驗證。

要解決這個問題,讓你的列表創建和維護其項目渲染器創建時。

創建列表,並在200離開其高度,但其可見性設置爲false。即使錯誤的可見性,該列表仍然在顯示列表上創建,驗證並維護。添加你的效果來顯示和隱藏列表作爲showEffect和hideEffect樣式的列表,然後簡單地切換可見與您的標題點擊。

只需使用Button作爲嵌入式項目渲染器,即可獲得除簡單標籤之外的其他內容。

<mx:VBox verticalGap="0"> 
    <mx:HBox click="list.visible = !list.visible"> 
     <s:Label text="click me"/> 
    </mx:HBox> 
    <mx:List id="list" height="200" visible="false" labelField="label"> 
     <mx:dataProvider> 
      <s:ArrayCollection> 
       <fx:Object label='Button 1' /> 
       <fx:Object label='Button 2' /> 
       <fx:Object label='Button 3' /> 
       <fx:Object label='Button 4' /> 
       <fx:Object label='Button 5' /> 
       <fx:Object label='Button 6' /> 
      </s:ArrayCollection> 
     </mx:dataProvider> 
     <mx:itemRenderer> 
      <fx:Component> 
       <mx:Button /> 
      </fx:Component> 
     </mx:itemRenderer> 
     <mx:showEffect> 
      <s:Fade alphaFrom="0" alphaTo="1" duration="1500"/> 
     </mx:showEffect> 
     <mx:hideEffect> 
      <mx:Fade alphaFrom="1" alphaTo="0" duration="1500" /> 
     </mx:hideEffect> 
    </mx:List> 
</mx:VBox>