2012-08-09 31 views
0

在flex3中,List有isItemSelected()方法,但我沒有在flex4中找到它們。我的場景是確定當前的ItemRenderer是否被選中,然後取決於選定的值,在ItemRenderer中的特定組件上做一些邏輯(假設ItemRenderer有一個Image組件和Label組件,我只想在圖像)Flex4 List itemRenderer isItemSelected()方法

回答

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

這種方式,不需要監聽器/處理器。

希望這會有所幫助。祝你有美好的一天。

+0

糾正我,如果我錯了,但是國家尚未在Flex 3? – RIAstar 2012-08-09 09:06:55

+0

嗯,是的,但在我看來,在Flex 4中,您可以使用它們做更多事情。那正是我想表達的。但是你是對的,可以理解它們已經被Flex 4引入了,這是不正確的。 – 2012-08-09 09:12:23

+0

我編輯了我的答案,希望這種方式更有意義。 – 2012-08-09 09:15:13