[英]Catch enter key press in input text field in AS3
當用戶填寫AS3中的輸入文本字段時,我想要按下回車鍵。 我想我必須做這樣的事情:
inputText.addEventListener(Event. ? , func);
function func(e:Event):void{
if(e. ? == "Enter"){
doSomething();
}
}
但我找不到最好的方法來做到這一點。 順便說一句,輸入文本有一個限制:
inputText.restrict = "0-9";
我應該在限制中添加回車鍵嗎?
inputText.restrict = "0-9\n";
提前致謝。
更正的答案
您可以輕松收聽文本字段聚焦時發生的鍵盤事件。
只需將KEY_DOWN事件直接添加到文本字段,然后執行任何操作即可。
// get key presses only when the textfield is being edited
inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent){
// if the key is ENTER
if(event.charCode == 13){
// your code here
doSomething();
}
}
另外,textfields還會發送其他有用的事件:
以前的錯誤答案:
我認為實際做你想做的事的唯一方法是有點復雜。
基本上,當按下Enter鍵時,您無法從常規TextField中獲取任何事件。 你必須做周圍的工作......
一個想法是聽取文本領域的焦點事件。 當它具有焦點時,您可以為舞台上的鍵盤事件添加一個監聽器,並檢查按下的鍵是否為Enter,如果是,則觸發您的操作,否則跳過。
示例代碼:
inputText.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
inputText.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);
function textInputHandler(event:FocusEvent):void {
//our textfield has focus, we want to listen for keyboard events.
stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function textInputHandlerOut(event:FocusEvent):void {
//our textfield lost focus, remove our listener.
stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function keyDownHandler( e:KeyboardEvent ):void{
//a key was pressed, check if it was Enter => charCode 13.
if( e.charCode == 13 ){
//ok, enter was pressed. Do your thing.
trace("We pressed enter, doSomething" )
}
}
對於那些想知道如何使用TextInput字段而不是TextField處理“Enter”鍵的人來說,這是一個簡單的過程:
import fl.events.ComponentEvent
...
myListeningField.addEventListener(ComponentEvent.ENTER, listenerMethod);
function listenerMethod(e:Event):void{
//DO SOME STUFF
}
您使用的是文本字段還是TextInput?
按下enter時,TextInput將調度Enter事件。 有關這方面的更多信息,請訪問http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event :enter
我不確定這對於Textfield是如何工作的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.