ButtonBar étincelle flex: comment déterminer quel bouton en cas mouseOver
-
25-09-2019 - |
Question
re: spark.components.ButtonBar
Dans l'étincelle de ButtonBar mouseOver événement , comment déterminez-vous qui des plusieurs boutons de la souris plane au-dessus? 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.
La solution
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>
Hope qui aide, Lance
Autres conseils
Vous pouvez simplement utiliser l'événement itemRollOver
de la barre de boutons d'allumage.