2010-03-06 46 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