0

flex3 では List に isItemSelected() メソッドがありますが、flex4 では見つかりませんでした。私のシナリオは、現在の ItemRenderer が選択されているかどうかを判断し、選択した値に応じて、ItemRenderer の特定のコンポーネントでいくつかのロジックを実行します (ItemRenderer に Image コンポーネントと Label コンポーネントがあるとします。画像)

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 に答える