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