В flex3 у List есть метод isItemSelected(), но я не нашел их в flex4. Мой сценарий определяет, выбран ли текущий ItemRenderer или нет, а затем зависит от выбранного значения, выполняет некоторую логику для определенного компонента в ItemRenderer (предположим, что ItemRenderer имеет компонент изображения и компонент метки, я только хочу выполнить некоторую логику для Изображение)
Метод Flex4 List itemRenderer isItemSelected()
Ответы (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" />
Таким образом, прослушиватель/обработчик не требуется.
Надеюсь это поможет. Хорошего дня.