2010-12-11 45 views
0

dans le fichier principal, je voudrais écrire:Où placer du code personnalisé dans un composant personnalisé dans Flash Builder?

<components:mybutton id="mybutton1" rollOver="point_rollOverHandler(event)" /> 

Mais si je veux le composant à avoir ce comportement naturellement, où il dois-je écrire dans le fichier MXML mybutton avoir elle-même référence?

J'ai essayé <s:rollOver="point_rollOverHandler(event)"/> mais il se plaint le type d'élément doit être suivi soit spécifications attribuiez,> ou />

Répondre

1

dans la balise racine de votre composant personnalisé ajouter la propriété:

creationComplete="init()" 

puis dans la balise de script de votre composant personnalisé créer cette fonction et mettre en place l'écouteur d'événement de souris:

function init():void{ 
    this.addEventListener(MouseEvent.MOUSE_OVER, point_rollOverHandler) 
} 

mais cela appellera la fonction point_rollOverHandler (e: MouseEvent) définie dans votre composant personnalisé. Si vous cherchez à appeler une fonction définie sur son parent, ce que vous avez est le meilleur moyen. Sinon, vous seriez trop serré les composants, ce qui rendrait votre code fragile et moins réutilisable.

2

Je pense que votre composant est basé sur s: Button. Il suffit de déclarer la méthode reportables dans le cadre de vos composants noeud principal MXML comme celui-ci (ligne 5):

// myButton.mxml

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

      > 

    <fx:Script> 
     <![CDATA[ 
      protected function button1_rollOverHandler(event:MouseEvent):void 
      { 
       // TODO Auto-generated method stub 
      } 
     ]]> 
    </fx:Script> 

    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
</s:Button>