2011-07-07 10 views
1

ヘッダの下にヘッダ(HBox)とリストコントロールを含むカスタムコントロールを作成しました。ヘッダーのクリックイベントを使用して、リストを開いたり閉じたりすることができます(Meaning list.height = 0 and list.height = 200)。最初はリストは閉じた状態(高さ= 0)になります。私たちが初めてそれを開くとき。時間がかかり過ぎる。同じリストを連続して開くと、よりスムーズに見えます(itemrendererが再利用されているためです)。私は最初にスムーズにリストを開きたいです。私は内部の1つの5コンボボックスが含まれているリストコントロールのために自分のレンダラを作成しているリストは作成時にフレックスで作成されました

いずれか助けてくださいHBoxの

+0

いくつかのコードを示す必要があります。なぜFlex 3を使用していますか?なぜ高さ= 0、高さ= 200ですか? visible = false、visible = trueで十分ではありませんか? –

+0

DropDownListを再作成しようとしているようです。そうです。どうして?また、あなたのコードを見ずにここで助けてもらえません。 – JeffryHouser

答えて

0

あなたがドロップダウンリストを再作成しているように聞こえるんが、その理由は、それがロードするのに時間がかかりすぎますアイテムレンダラーが作成されていないため、初めてのリストです。リストコントロールは、指定された時間にその中にフィットとしてだけ多くのアイテムレンダラーを作成します。高さ= 0で始めるので、アイテムレンダラーは作成されません。したがって、最初に高さを変更すると、すべてのアイテムレンダラーの作成と検証が強制されます。

これを修正するには、作成時にアイテムレンダラーを作成して更新してください。

リストを作成し、高さは200のままにしますが、可視性をfalseに設定します。誤った可視性があっても、リストは作成され、検証され、表示リストに保持されます。リストの表示と非表示のエフ​​ェクトを追加して、リストのshowEffectとhideEffectスタイルを追加し、ヘッダーをクリックするだけで表示を切り替えることができます。

ボタンを単なるラベル以外のドロップインアイテムレンダラーとして使用するだけです。

<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> 
関連する問題