Um einen Parameter im AS3 an den Ereignis-Listener zu übergeben, ist der einfache Weg ... vorhanden?

Erwartet /pseudo Beispiel:

stage.addEventListener(MouseEvent.CLICK, onClick.someWayToPassParameters(true, 123, 4.56, "string"));
function onClick(e:MouseEvent):void {
    trace("Received " + someWayToRetrieveParameters().b/i/n/s + ".");
}

Seit vielen Jahren (3~4), auf jeder website, forum, blog, wo immer ich suchte, die Leute sagen mir es gibt keinen einfachen Weg, dies zu tun. Sie in der Regel vorschlagen:

  • Fügen Sie den Zuhörer zu einem dynamischen Objekt, wo Sie den Wert festlegen, um eine zusätzliche Eigenschaft und Verweis (e.Ziel.Grundstück /e zu.currentTarget.Eigentum) in die Funktion.

    Nicht alle Klassen sind dynamisch. Es wird nicht funktionieren, auf ein Sprite, zum Beispiel.

  • Erweitern Sie die Klasse des Objekts mit einer benutzerdefinierten Klasse, die Eigenschaft hinzufügen oder einfach nur machen es dynamisch.

    Müssen Sie erstellen eine ganz neue tweak class everytime.

  • Verwenden Sie eine anonyme Funktion als event-handler.

    Gibt es keine Referenz (und es ist hässlich). Um den listener entfernen, um Ressourcen freizugeben, die Sie gezwungen sind, es zu tun, von innerhalb der Funktion selbst mit Argumenten.angerufene.

  • Eine andere Funktion aufrufen, die Verwendung der parameter innerhalb der event-handler.

    Ist und wo der event-handler-Aufruf führt der parameter gehen?

  • Halten Sie die event-handler im gleichen Bereich wie die parameter.

    Verletzung zu einem totalen semantischen Chaos.

  • Kapseln beide event-handler-definition, und Sie addEventListener () - Aufruf in einer Funktion empfängt die Ziel-und Kenngrößen.

    Kann es-mix-Bereiche, aber es ist eng. Sie müssen vorsichtig sein, obwohl.

...Unter vielen anderen vorgeschlagenen workarounds.

Alles was ich will ist nur zu pass ein argument zu den event-handler, so dass ich es verwenden kann in seiner Funktion, genau wie eine normale Funktion!

Bin ich zu viel verlangt?

InformationsquelleAutor der Frage user985358 | 2012-11-21

Schreibe einen Kommentar