当我的焦点在输入文本字段内时,按CTRL+ENTER
可以正常工作,但ENTER
没有。
当我的焦点在任何地方时按Enter
但是输入文本字段工作正常..
我的意图是在用户填写字段后检测是否按下ENTER
键,但它似乎仅适用于CTRL+ENTER
ActionScript 3 :
// works:
stage.addEventListener(KeyboardEvent.KEY_DOWN, enterHandler);
// ignored:
email.addEventListener(KeyboardEvent.KEY_DOWN, enterHandler);
function enterHandler(event:KeyboardEvent):void{
if(event.keyCode == Keyboard.ENTER ){
email.text = 'Thanks!';
}
}
ENTER
导致 charCode == 0,而CTRL+ENTER
是 charCode == 13
email
是使用“文字”工具创建的,并设置为“可编辑”
注意:我正在使用运行Flash v10的Chrome和Firefox进行测试
答案 0 :(得分:4)
我假设您正在使用ADL调试您的工作( Control>测试影片>在Flash Professional中)?这里的问题是键盘快捷键优先于键盘事件,而回车键是 Control>键盘快捷键。在测试电影时,在 Control 菜单中播放。
但是,在测试电影时,可以非常轻松地禁用键盘快捷键。当您的电影正在播放时,转到 控制&gt;禁用键盘快捷键 。现在,输入键的键盘事件将正确执行。<强> [编辑] 强>
哦,您应该使用event.keyCode
代替event.charCode
。
[编辑#2]
好的,如果你想在当前输入TextField时触发输入键盘事件,你只需要将TextEvent监听器添加到TextField:
import flash.events.TextEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
var tf:TextField = new TextField();
tf.border = true;
tf.multiline = true; //Must be set to true for the textField to accept enter key
tf.type = TextFieldType.INPUT;
tf.width = 200;
tf.height = 20;
tf.addEventListener(TextEvent.TEXT_INPUT, keyboardReturnHandler);
function keyboardReturnHandler(evt:TextEvent):void
{
if (evt.text == "\n")
{
evt.preventDefault();
trace("text field enter");
}
}
addChild(tf);