2009-05-14 3 views
2

私はFlashを初めて使いました。この単純な動作を行うことはできません。Flash:addEventListenerが検出されない入力テキストボックスにイベントをペーストします

(Iは、ActionScript 3.0を使用しています)

私は私のエディタで入力されたテキストボックスを作成しました。インスタンス名は "test"です。私のアクションエディタで 私はこれを持っている:

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

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

私はそれを実行すると、それは私にCtrl + Vまたは右クリック+ペーストをやっているかどうか、私のペーストイベントのいずれかを検出しません。 MouseEvent.CLICKのような別のイベントを使用すると、正常に検出されます。実際、私はEvent.XXXイベント(COPY、INITなど)は検出されていないと思っています(少なくとも試したものから)。 MouseEventイベントとKeyboardEventイベントはすべて正しく動作しているようです。

私は間違っていますか?

+0

[AS3での発送pasteイベント]の可能複製(http://stackoverflow.com/questions/16559409/ dispatch-paste-event-in-as3) –

答えて

2

TextFieldオブジェクトは、clear、copy、cut、paste、またはselectAllイベントを送出しません。悪いニュースを申し訳ありません!

タイラー。

+0

Aw。私はそれを回避することができると思います。 – user107312

+0

あなたはそれを拡張し、その機能を自分自身に追加することができます(どのキーが押されたか監視する必要があります)が、下の提案も良いです。 –

0

貼り付けはフィールドを変更する予定なので、私はEvent.CHANGEを聞きます。

+0

myField.text = "foo"を設定すると、イベント.CHANGEは発生しません。 CHANGEイベントを引き起こすフィールドにテキストを追加する別の方法はありますか? –

0

これに対する解決策は、TextEvent.TEXT_INPUTをリッスンし、デフォルトの動作を防ぐためです:

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(); 
} 
関連する問題