2010-03-06 11 views
1

re: spark.components.ButtonBarButtonBar étincelle flex: comment déterminer quel bouton en cas mouseOver

Dans l'étincelle mouseOver événement de ButtonBar, comment déterminez-vous qui des plusieurs boutons de la souris est en vol stationnaire plus de? Il y a, bien sûr, index sélectionné à ce stade. Si cela fait une différence, mon ButtonBar ne définit pas MXML mais est instancié dans ActionScript et un ArrayList est affecté à la propriété dataProvider de mon exemple ButtonBar.

Merci pour l'aide.

Répondre

1

Il n'y a pas vraiment facile/moyen intégré pour le faire si Flex 4, et je pense que c'est une bonne chose. , Ils vous donnent accès à la place aux équarrisseurs via ElementExistenceEvent.RENDERER_ADD et ElementExistenceEvent.RENDERER_REMOVE, vous pouvez donc chercher toutes sortes d'événements sur les enfants. Essayez ceci:

<?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> 

espoir qui aide, Lance

+1

Merci, Lance, pour l'explication très utile et un exemple concis. – Tim

0

Vous pouvez simplement utiliser l'événement itemRollOver de la barre de boutons d'allumage.

+1

Remarque - cet événement est disponible uniquement au Flex 4.5 et au-delà http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/components/supportClasses/ListBase.html#event:itemRollOver – JabbyPanda