3 Stimmen

Flash: addEventListener erkennt keine Einfüge-Ereignisse in Eingabe-Textfeldern

Ich bin neu in Flash und kann diese einfache Aktion nicht durchführen.

(Ich verwende ActionScript 3.0)

Ich habe in meinem Editor ein Eingabefeld für Text erstellt. Der Name der Instanz ist "test". In meinem Action-Editor habe ich dies:

import flash.events.Event;
this.test.addEventListener(Event.PASTE, pasteHandler);

function pasteHandler(e:Event)
{
    trace("blaaaaaaaaaagh");
}

Wenn ich es ausführe, erkennt es keines meiner Einfügeereignisse, egal ob ich Strg+V oder Rechtsklick+Einfügen anwende. Wenn ich ein anderes Ereignis verwende, z. B. MouseEvent.CLICK, wird es problemlos erkannt. Ich glaube sogar, dass keine Event.XXX-Ereignisse (wie COPY, INIT usw.) erkannt werden (zumindest nicht von denen, die ich ausprobiert habe). Alle MouseEvent und KeyboardEvent Ereignisse scheinen gut zu funktionieren.

Was mache ich falsch?

2voto

Tyler Egeto Punkte 5475

TextField-Objekte versenden keine Clear-, Copy-, Cut-, Paste- oder SelectAll-Ereignisse. Entschuldigung für die schlechte Nachricht!

Tyler.

1voto

William Grand Punkte 845

Die Lösung hierfür ist, auf TextEvent.TEXT_INPUT zu warten und das Standardverhalten zu verhindern:

textField.addEventListener(TextEvent.TEXT_INPUT, onTextInput );

function onTextInput( e:TextEvent ) : void
{
    // this takes place of PASTE because Event.PASTE is not triggered on a textfield
    var t:TextField = TextField( e.currentTarget );
    t.replaceSelectedText( e.text );
    e.preventDefault();
}

0voto

Joel Hooks Punkte 6209

Ich würde auf Event.CHANGE achten, da das Einfügen das Feld ändert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X