列表已经在flex中创建时间

时间:2011-07-07 06:24:30

标签: flex

我创建了一个自定义控件,其中包含标题下方的标题(HBox)和列表控件。我可以使用标题点击事件打开和关闭列表(含义list.height = 0和list.height = 200)。最初,列表将处于关闭状态(高度= 0)。当我们第一次打开它时。这需要太多时间。对于连续打开相同的列表看起来更平滑(我想这是因为itemrenderer正在被重用)。我想第一次顺利打开清单。任何人请帮忙

我为列表控件创建了自己的渲染器,其中包含HBox中的一个5个组合框

1 个答案:

答案 0 :(得分:0)

听起来好像是在重新创建一个下拉列表,但是第一次加载列表需要太长时间的原因是因为它没有创建任何项目渲染器。列表控件仅在任何给定时间创建与其中适合的项目渲染器一样多的项目渲染器。因为您从height = 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>