Der Grund, dass in mxml ist, was Sie schreiben ist eigentlich nicht der Handler, ist das, was in der Prozedur ausgeführt wird . Wenn Sie mit dem -keep-generated-actionScript-Flag kompilieren (Um es in Flex Builder zu setzen, klicken Sie mit der rechten Maustaste, um die Projekteigenschaften zu öffnen, Flex Compiler auszuwählen und -keep-generated-actionskript zu den Zusätzlichen Compiler-Argumenten hinzuzufügen) generierte Quelle für Ihre Komponente, dass der Compiler einen Handler für dieses Ereignis erstellt hat, und der Hauptteil besteht aus dem, was Sie in mxml geschrieben haben.
Also, wenn Sie so etwas wie:
click="doSomething();"
können Sie bereits feststellen, dass Sie tatsächlich eine Anweisung gibt zu geben, das ist keine Methode Referenz Sie vorbei, wie wenn man addEventHandler verwenden.
Dann werden Sie wie in der generierten Datei etwas haben:
private function myComponent_Click(evt : MouseEvent) : void
{
doSomething();
}
Und woanders in der gleichen Datei Hörer das Hinzufügen des Ereignisses:
this.addEventListener(MouseEvent.CLICK, myComponent_Click);
Hinweis der zweite Parameter nicht Ein Funktionsergebnis, es ist eine Funktionsreferenz, weil die Klammern, die einen Funktionsaufruf bezeichnen, fehlen und unsere spezielle Funktion auch kein Getter ist.
Sie können auch mehrere Anrufe in mxml angeben, wie:
click="doSomething(); doSomethingElse();"
Sie können sogar den Ereignisparameter auf Ihre Methode übergeben:
click="doSomething(event);"
Was auch immer Sie in den Wert des mxml Ereignis schreiben (Nicht sicher, dass es der richtige zu verwendende Ausdruck ist) wird der Hauptteil des generierten Handlers für das Actionscript-Ereignis.
Warum möchten Sie das tun? –
Es ist möglich, einen Event-Handler ohne Argumente in mxml hinzuzufügen. So ein Student wollte wissen, warum ist es nicht möglich, das gleiche in ActionScript zu tun? – dharm0us