0

在 flex3 中,List 有 isItemSelected() 方法,但是我在 flex4 中没有找到。我的场景是判断当前ItemRenderer是否被选中,然后根据选中的值,对ItemRenderer中的特定组件做一些逻辑(假设ItemRenderer有Image组件和Label组件,我只想对ItemRenderer做一些逻辑图片)

4

1 回答 1

2

在 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" />

这样,不需要侦听器/处理程序。

希望这可以帮助。祝你有美好的一天。

于 2012-08-09T08:28:58.497 回答