2009-05-14 4 views
2

Ich bin neu in Flash und kann diese einfache Aktion nicht ausführen.Flash: addEventListener erkennt keine Ereignisse in Eingabefeldern einfügen

(Ich bin mit Actionscript 3,0)

Ich habe ein Texteingabefeld in meinem Lektor. Der Instanzname lautet "test". In meinem Action-Editor Ich habe dies:

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

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

Wenn ich es ausführen, wird es keine meiner Paste Ereignisse erkennen, ob ich tue Strg + V oder Rechtsklick + Paste. Wenn ich ein anderes Ereignis wie MouseEvent.CLICK verwende, erkennt es es gut. Tatsächlich denke ich nicht, dass Event.XXX-Ereignisse (wie COPY, INIT usw.) erkannt werden (zumindest von denen, die ich ausprobiert habe). Alle MouseEvent- und KeyboardEvent-Ereignisse scheinen einwandfrei zu funktionieren.

Was mache ich falsch?

+0

möglich Duplikat [Dispatch-Paste Ereignis in AS3] (http://stackoverflow.com/questions/16559409/ Versand-Paste-Ereignis-in-As3) –

Antwort

2

TextField-Objekte versenden keine Clear-, Copy-, Cut-, Paste- oder SelectAll-Ereignisse. Sorry für die schlechten Nachrichten!

Tyler.

+0

Aw. Ich schätze, ich kann das umgehen. – user107312

+0

Sie könnten es erweitern und diese Funktionalität selbst hinzufügen (Sie müssten überwachen, welche Tasten gedrückt werden), aber der Vorschlag unten ist auch gut. –

0

Ich würde für Event.CHANGE hören, seit das Einfügen das Feld ändern wird.

+0

Event.CHANGE scheint nicht ausgelöst zu werden, wenn Sie myField.text = "foo" festlegen. Gibt es eine alternative Möglichkeit, Text zu einem Feld hinzuzufügen, das das CHANGE-Ereignis hervorruft? –

0

Die Lösung dieses Problems für TextEvent.TEXT_INPUT zu hören ist und das Standardverhalten 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(); 
}