0

タイトルでこれを説明する方法がわかりませんでしたが、アプリケーションの別のtextAreaにテキストを生成するtextAreaがあります。テキストは問題なく生成されます。

gallery.txtArea1.addEventListener(TextEvent.TEXT_INPUT, displayEvent);

function displayEvent(event:TextEvent):void {
        picArea1.text = gallery.txtArea1.text + event.text;
}

しかし、動的テキスト領域picArea1からテキストを削除したい場合、そのkeyCodeはキャプチャされません。そこで、そのために特別に別のイベントリスナーを追加しました。

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

function onKeyPressed(event:KeyboardEvent):void {
        if (event.keyCode == Keyboard.DELETE) {
            picArea1.text = gallery.txtArea1.text;
        }
}

リフレッシュするだけです。しかし、それは削除にも影響しません。私は何が欠けていますか?

4

2 に答える 2

1

このTextEvent.TEXT_INPUTメソッドは、テキスト入力に追加されないものにはディスパッチしません。

代わりにキーリスナーを追加して、正しい方向に進みました。KEY_DOWNの代わりにKEY_UPを使用すると、期待どおりに機能するはずです。

その理由は、システムによってテキスト入力が変更される前に、KEY_DOWNがディスパッチ/処理されるためです。Timerまたは、削除/バックスペースキーを押したままにして複数の文字を消去したときにすぐに結果を表示したい場合は、を使用してKEY_DOWNイベントとKEY_UPイベントの間で更新することができます。

于 2012-09-06T22:22:36.260 に答える
0

Ok。奇妙な問題。私が変更したとき:

event.keyCode == Keyboard.DELETE

event.keyCode == 8

それは働き始めました。Keyboardクラスとすべてをインポートしたので、なぜこれがうまくいったのかわかりません。文字列から最後の文字だけを削除するには、少し工夫が必要でした。これは、コード化した方法では、文字列全体を取得して最後の文字を最後に追加し、全体をリサンプリングして再度実行するためです。

picArea1.text = gallery.txtArea1.text + event.text;

これが私の最後の機能です。

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

function onKeyPressed(event:KeyboardEvent):void {
        if (event.keyCode == 8) {
            var newString:String = gallery.txtArea1.text;
            picArea1.text = newString.substring(0, newString.length - 1);
        }

}
于 2012-09-07T03:52:19.667 に答える