0

ステージに tlf テキスト入力があり、Enter キーを押したときにこのオブジェクトのハンドラーをディスパッチしたいのですが、これを行うことはできません

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Sprite;
tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent)
{
    if (event.keyCode = Keyboard.ENTER)
    {
        trace('enter key is detect');
    }
}

私の間違いはどこですか?

4

3 に答える 3

1

TLFText は、従来のテキストとは異なる方法で Enter キーを処理します。TLF の場合、これを使用します。

tlf.addEventListener(TextEvent.TEXT_INPUT, textInputHandler);

function textInputHandler(evt:TextEvent):void {
    if (evt.text=="\r") {
        trace('THE ENTER KEY WORKS NOW');
    }
}
于 2011-10-28T06:08:16.730 に答える
1

演算子「=」は代入用であり、比較用ではありません。EQUAL TO 演算子は「==」です。だから、あなたのコードで:

 if (event.keyCode = Keyboard.ENTER)

次のようにする必要があります。

if (event.keyCode == Keyboard.ENTER)

ステージにテキスト入力があり、それが 'tlf' であると仮定すると、これは機能します。

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Sprite;

tlf.addEventListener(KeyboardEvent.KEY_DOWN,key_down_handler);

function key_down_handler(ev:KeyboardEvent)
{
    if (ev.keyCode == Keyboard.ENTER)
    {
        trace('enter key!!!!');
    }
}

1 つのアドバイス: 変数と関数により意味のある名前を付けるようにしてください。たとえば、入力テキストフィールドの場合は 'tlf' ではなく ' tlf_input_text'で、'handler' ではなく ' key_down_handler ' などです。他の人 (そして長期的には自分自身) がコードを読んで理解するのに役立ちます。

于 2011-10-27T12:19:11.537 に答える
0

私はちょうど同じ問題を経験しました。

私にとってそれを解決する最善の方法は、イベントリスナーに (useCapture=true) を追加することでした。

したがって、この: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);

これになります: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler,true);

以前に提供された2つの回答が満足のいくものだとは思いません。1 つはコーダーに TLF の使用をやめてもらいたいというもので、もう 1 つは KeyboardEvent の使用をやめてほしいというものです。

参照: http://forums.adobe.com/thread/826424

于 2013-10-01T13:27:33.007 に答える