1

ゲームに入れようとしているチャット クラスで、かなり苛立たしい問題が発生しています。

基本的に、これは何が起こっているかです:

1) 文字「t」の KeyboardEvent.KEY_DOWN をリッスンします。("t" でチーム チャットが表示されます)

2) 次に、入力テキスト フィールドを表示するクラスを呼び出します (作成されたタイムライン)。

3) 次に、その入力テキストに stage.focus します。

入力テキストフィールドに文字「t」が表示されていることを除いて、すべて正常に機能します。

したがって、KeyboardEvent をキャプチャして「t」を入力していると考えたので、inputText.text = ""; を呼び出して入力テキスト フィールドをクリアするために、入力テキスト フィールドが stage.focus された後にトリガーするイベント リスナーを作成しました。

ただし、「」にクリアする代わりに、「t」のままにするだけで機能しません。

もう少し実験して、フォーカス イベントの後に inputText.text = "CLEAR" を設定しようとしました。

結局のところ、入力テキストフィールドのtの直後にカーソルが「tCLEAR」と表示され、さらに入力すると「CLEAR」が右に押し出されるという奇妙なことが起こります。

私の知る限り、テキストフィールドの動的または入力は、「」に設定するとクリアされます。ただし、この場合はそうではなく、t の後に "" を押すだけです。

とにかくいろいろ調べてみましたが、だめでした。

私は TextEvent.TEXT_INPUT の後に "" にクリアしようとしましたが、 "t" を押した後に KeyListener を削除しましたが、まだ喜びはありません。

どんな助けでも大歓迎です。

4

1 に答える 1

2

ハンドラに追加できevent.stopImmediatePropogation()ます。KeyboardEvent.KEY_DOWNまたは、これが役に立たない場合は、KeyboardEvent.KEY_UPイベントを使用して、押されたボタンをevent.stopImmediatePropogation()ハンドラーでキャプチャしてみてください。

編集

ええと、キーダウン イベントで正確にそのようにすることがなぜ重要なのかわかりません。しかし、私はこの解決策を提案できます:

TextEvent.TEXT_INPUT1)キーダウン ハンドラーの TextField にリスナーを追加します。

2) テキスト入力ハンドラーで、リスナーを追加event.preventDefault();および削除します。TextEvent.TEXT_INPUT

このようなもの:

function keyDownHandler(event:KeyboardEvent):void
{
    ...
    stage.focus = tf;
    tf.addEventListener(TextEvent.TEXT_INPUT, tf_textInputHandler);

}

function tf_textInputHandler(event:TextEvent):void
{
    event.preventDefault();
    tf.removeEventListener(TextEvent.TEXT_INPUT, tf_textInputHandler);
}

あなたのテキストフィールドはどこtfにありますか。

于 2012-06-06T07:06:08.343 に答える