Список был изменен на время создания в flex - PullRequest
1 голос
/ 07 июля 2011

Я создал пользовательский элемент управления, который содержит заголовок (HBox) и элемент управления списком под заголовком. Я могу открыть и закрыть список (Значение list.height = 0 и list.height = 200) с помощью события щелчка заголовка. Первоначально список будет в закрытом состоянии (высота = 0). Когда мы открываем его в первый раз. Это занимает слишком много времени. Для последовательного открытия того же списка выглядит более гладким (я полагаю, это потому, что itemrenderer используется повторно). Я хочу открыть список в первый раз плавно. Любой, пожалуйста, помогите

Я создал свой собственный рендерер для управления списком, который содержит один 5 комбинированный список внутри HBox

1 Ответ

0 голосов
/ 15 сентября 2011

Звучит так, будто вы воссоздаете выпадающий список, но причина, по которой загрузка вашего списка занимает слишком много времени, заключается в том, что он не создал средств визуализации элементов.Элемент управления списком создает только столько средств визуализации элементов, сколько умещается в нем в любой момент времени.Поскольку вы начинаете с высоты = 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...