3

私はFlashを初めて使用するので、この単純なアクションを実行できないようです。

(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イベントはすべて正常に機能しているようです。

私は何が間違っているのですか?

4

3 に答える 3

2

TextFieldオブジェクトは、clear、copy、cut、paste、またはselectAllイベントをディスパッチしません。悪い知らせでごめんなさい!

タイラー。

于 2009-05-14T20:34:24.207 に答える
1

これに対する解決策は、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();
}
于 2012-04-06T21:43:42.827 に答える
0

貼り付けるとフィールドが変わるので、Event.CHANGEを聴きます。

于 2009-05-14T20:44:56.647 に答える