Flash AS3:没有检测到ENTER,但CTRL + ENTER工作正常

时间:2011-06-23 23:59:49

标签: flash actionscript-3

当我的焦点在输入文本字段内时,按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进行测试

1 个答案:

答案 0 :(得分:4)

我假设您正在使用ADL调试您的工作( Control>测试影片>在Flash Professional中)?这里的问题是键盘快捷键优先于键盘事件,而回车键是 Control>键盘快捷键。在测试电影时,在 Control 菜单中播放

但是,在测试电影时,可以非常轻松地禁用键盘快捷键。当您的电影正在播放时,转到 控制>禁用键盘快捷键 。现在,输入键的键盘事件将正确执行。


<强> [编辑]

哦,您应该使用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);