2010-03-06 23 views
1

重:spark.components.ButtonBar柔性火花按鈕欄:如何確定哪些按鈕在鼠標懸停事件

火花按鈕欄的鼠標懸停事件,你如何確定哪些幾個按鈕的鼠標懸停過度?當然,在這個時候沒有選擇指數。如果它有所不同,我的ButtonBar沒有在MXML中定義,但在ActionScript中實例化,並且ArrayList被分配給我的ButtonBar實例的dataProvider屬性。

感謝您的幫助。

回答

1

如果Flex 4沒有真正簡單/內置的方法來做到這一點,我認爲這是件好事。相反,他們讓您通過ElementExistenceEvent.RENDERER_ADDElementExistenceEvent.RENDERER_REMOVE訪問渲染器,因此您可以查找各種兒童活動。嘗試了這一點:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Script> 
     <![CDATA[ 

      import mx.core.IVisualElement; 
      import spark.events.RendererExistenceEvent; 

      protected function rendererAddHandler(event:RendererExistenceEvent):void 
      { 
       var element:IVisualElement = event.renderer; 
       element.addEventListener(MouseEvent.MOUSE_MOVE, renderer_mouseMoveHandler); 
      } 

      protected function rendererRemoveHandler(event:RendererExistenceEvent):void 
      { 
       var element:IVisualElement = event.renderer; 
       element.removeEventListener(MouseEvent.MOUSE_MOVE, renderer_mouseMoveHandler); 
      } 

      protected function renderer_mouseMoveHandler(event:MouseEvent):void 
      { 
       trace(event.currentTarget.label); 
      } 

     ]]> 
    </fx:Script> 

    <s:ButtonBar id="buttonBar" 
     rendererAdd="rendererAddHandler(event)" 
     rendererRemove="rendererRemoveHandler(event)"> 
     <s:dataProvider> 
      <mx:ArrayList source="[one, two, three, four]"/> 
     </s:dataProvider> 
    </s:ButtonBar> 
</s:Application> 

希望幫助, 蘭斯

+1

謝謝蘭斯,對於非常有幫助的解釋和簡明的例子。 – Tim 2010-03-07 00:06:54

0

您可以簡單地使用itemRollOver事件的火花按鈕欄的。

+1

注 - 此事件僅適用於Flex 4.5及更高版本 http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/spark/components/supportClasses/ListBase.html#event:itemRollOver – JabbyPanda 2012-03-09 12:22:10