2010-12-11 11 views
0

in der Hauptdatei, würde ich schreiben:Wo kann ich benutzerdefinierten Code in eine benutzerdefinierte Komponente in Flash Builder einfügen?

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

Aber wenn ich die Komponente wollen angeboren dieses Verhalten haben, wo ich schreibe es in der MyButton MXML-Datei, um es auf sich selbst verweisen zu haben?

Ich versuchte <s:rollOver="point_rollOverHandler(event)"/> aber es beschwert muss der Elementtyp entweder durch atrribute Spezifikationen folgen,> oder />

Antwort

1

im Root-Tag für die benutzerdefinierte Komponente der Eigenschaft hinzufügen:

creationComplete="init()" 

dann im Skript-Tag Ihrer benutzerdefinierten Komponente die Funktion erstellen und die Maus-Ereignis-Listener einrichten:

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

, aber dies ruft die Funktion point_rollOverHandler (e: MouseEvent) auf, die in Ihrer benutzerdefinierten Komponente definiert ist. Wenn Sie eine Funktion aufrufen möchten, die auf dem übergeordneten Element definiert ist, ist das, was Sie haben, der beste Weg. Sonst würden Sie die Komponenten zu eng miteinander verbinden, was Ihren Code spröde und weniger wiederverwendbar machen würde.

2

Meine Vermutung ist, dass Ihre Komponente auf s basiert: Button. erklärt nur die Überschlags-Methode in Ihren Komponenten MXML-Hauptknoten wie diese (Linie 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>