当用户在 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();
}
}
另外,文本字段还发送其他有用的事件:
上一个错误答案:
我认为真正做你想做的事情的唯一方法有点复杂。
基本上,您无法从按下 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" )
}
}
关于actionscript-3 - 在 AS3 的输入文本字段中捕获输入键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297368/