Метод Flex4 List itemRenderer isItemSelected()

В flex3 у List есть метод isItemSelected(), но я не нашел их в flex4. Мой сценарий определяет, выбран ли текущий ItemRenderer или нет, а затем зависит от выбранного значения, выполняет некоторую логику для определенного компонента в ItemRenderer (предположим, что ItemRenderer имеет компонент изображения и компонент метки, я только хочу выполнить некоторую логику для Изображение)


person jason    schedule 09.08.2012    source источник


Ответы (1)


Во Flex 4 функция визуализации элементов может лучше использовать состояния. Это означает, что у них есть состояния по умолчанию, которые мы можем использовать для реализации логики, зависящей от состояния:

normal
hovered
selected
up

Если вы хотите что-то сделать, когда элемент становится выбранным, вы можете добавить прослушиватель для события stateChangedComplete и реализовать свою логику в этом обработчике (конечно, вам нужно будет проверить, является ли текущее состояние «выбранным»). Код может выглядеть примерно так:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx"
                stateChangeComplete="stateChangedHandler()"
                autoDrawBackground="false">

    <fx:Script>
        <![CDATA[
            protected function stateChangedHandler():void
            {
                if(currentState == "selected")
                {
                    // implement your logic here
                }
            }
        ]]>
    </fx:Script>

    <!-- Your original MXML code here -->

</s:ItemRenderer>

Это был бы путь, если вам нужна нетривиальная логика. Однако, если вам просто нужно изменить некоторые атрибуты изображения, когда средство визуализации элемента становится выбранным, вы можете просто указать пару свойств/значений для конкретного состояния для элемента, например так (давайте предположим, что изображения по умолчанию исчезают , и когда элемент выбран, вы хотите, чтобы они исчезли, ради объяснения):

<s:Image alpha="0.5" alpha.selected="1" />

Таким образом, прослушиватель/обработчик не требуется.

Надеюсь это поможет. Хорошего дня.

person Romi Halasz    schedule 09.08.2012
comment
Поправьте меня, если я ошибаюсь, но были ли состояния еще не во Flex 3? - person RIAstar; 09.08.2012
comment
Ну да, но на мой взгляд, во Flex 4 с ними можно сделать намного больше. Именно это я и пытался выразить. Но вы правы, можно понять, что они введены Flex 4, что неверно. - person Romi Halasz; 09.08.2012
comment
Я отредактировал свой ответ в надежде, что так он будет иметь больше смысла. - person Romi Halasz; 09.08.2012
comment
@RomiHalasz спасибо за вашу идею. Теперь я решил проблему с itemRenderer. Но я столкнулся с другой проблемой, связанной с проблемой макета списка, не могли бы вы мне помочь? Вопрос размещен на другой странице. - person jason; 10.08.2012
comment
@RomiHalasz вопрос размещен здесь: stackoverflow.com/questions /11897205/ - person jason; 10.08.2012