2011-10-24 87 views
0

我在舞臺上TLF文本輸入,我想派遣ahndler此對象按回車鍵時,但我不能做到這一點鍵盤ENTER鍵不工作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) 

應該是:

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

一個建議:如果輸入文本框爲'tlf_input_text'而不是'hand',則嘗試給變量和函數提供更多有意義的名稱,例如替代「tlf」 ler':'key_down_handler'或類似的東西。它將幫助其他人(和你自己,從長遠來看)閱讀和理解你的代碼。

+0

另外,如果在Flash IDE測試確保鍵盤快捷鍵被禁用,以確保所有的按鍵都被抓到SWF。 – shanethehat

+0

danii tlf處理事件有點不同 – tmediaa

1

TLFText處理輸入密鑰與傳統文本不同。對於TLF使用此:

tlf.addEventListener(TextEvent.TEXT_INPUT, textInputHandler); 

function textInputHandler(evt:TextEvent):void { 
    if (evt.text=="\r") { 
     trace('THE ENTER KEY WORKS NOW'); 
    } 
} 
+0

謝謝鮑勃,這是正確的 – tmediaa

0

我剛剛經歷了同樣的問題。

爲我解決這個問題的最好方法是給事件監聽器添加(useCapture = true)。

所以這個: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);

變爲這樣: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler,true);

我不相信以前提供的2個答案是令人滿意的。 一個人希望編碼器停止使用TLF,另一個人希望他停止使用KeyboardEvent。

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