2011-10-24 29 views
0

私は、ステージでのTLFテキスト入力を持っているが、私はこのオブジェクトのディスパッチahndlerをしたい、しかし、私は私のミスです。このキーボード入力キーはtlfテキスト入力では機能しませんか?プレスでキーを入力するとき

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'); 
    } 
} 

を行うことはできませんか?

答えて

1

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

if (event.keyCode = Keyboard.ENTER) 

する必要があります:あなたは、ステージ上のテキスト入力を持っていると仮定すると、それは 'TLF' と呼ばれています

if (event.keyCode == Keyboard.ENTER) 

、これは動作します:

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' ler ':' key_down_handler 'のようなものです。これは、他の人(そして長期的にはあなた自身)があなたのコードを読んで理解するのに役立ちます。

+0

また、フラッシュIDEでのテストは、キーボードショートカットは、すべてのキーの押下がSWFによって捕捉されることを保証するために無効になっていることを確認する場合。 – shanethehat

+0

danii tlfハンドルイベント少し異なる – tmediaa

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'); 
    } 
} 
+0

ありがとうbob、そうだよ – tmediaa

0

は、私はちょうど同じ問題を経験しています。

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

ので、この:私は以前に提供さ2件の回答が満足のいくものであるとは考えていない tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler,true);

tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);

が、このなります。 TLFの使用を中止するコードコーダーと、KeyboardEventの使用を中止するコードコーダーがあります。

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

関連する問題