Actionscript 3 AS3 TextField-将值设置为“时不需要的回车”&引用;

Actionscript 3 AS3 TextField-将值设置为“时不需要的回车”&引用;,actionscript-3,input,textfield,carriage-return,Actionscript 3,Input,Textfield,Carriage Return,我有一个输入文本字段和一个KeyboardEvent.KEY_甚至在舞台上的监听器上按下,以监听键盘。输入事件。事件侦听器将输入的文本添加到数组或其他内容中,然后清除文本字段。问题是,当Enter key事件触发且TextField值设置为“”时,它会在TextField中留下回车符,光标位于第二行。世界跆拳道联盟?我编写AS2和AS3已经很长时间了,以前从未遇到过这种情况。我疯了吗?请大家帮忙!:-) 示例: var myTextArray:Array = new Array(); stage

我有一个输入文本字段和一个KeyboardEvent.KEY_甚至在舞台上的监听器上按下,以监听键盘。输入事件。事件侦听器将输入的文本添加到数组或其他内容中,然后清除文本字段。问题是,当Enter key事件触发且TextField值设置为“”时,它会在TextField中留下回车符,光标位于第二行。世界跆拳道联盟?我编写AS2和AS3已经很长时间了,以前从未遇到过这种情况。我疯了吗?请大家帮忙!:-)

示例:

var myTextArray:Array = new Array();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

function onKeyDown(e:KeyboardEvent):void{
    if(e.keyCode == Keyboard.ENTER){
        if(_inputText.text != null){
            myTextArray.push(_inputText.text);
    }
    _inputText.text = "";
    }
}

如果您能够输入回车,这意味着文本字段是多行的,不是吗


您是否尝试在
键盘事件中清空输入文本。向上键
事件侦听器回调函数?

是否在文本字段处于焦点的情况下按enter键?在这种情况下,可能是在通过键盘操作更新文本字段的值之前调用了
onKeyDown
。您可以在
onKeyDown
中将文本字段设置为空字符串,然后flash向其添加新行


将文本输入事件侦听器添加到文本字段中,并将跟踪语句添加到两个事件处理程序中,以了解事件的顺序。

如果您处于Flash创作模式(在IDE中),则需要在测试时取消选中控制->禁用键盘快捷键。还可以尝试为
键创建一个“清理”处理程序

这似乎是某种错误-我也明白了。如果您只是在构造函数(或任何地方)中设置textField.text=“”,似乎可以解决问题。

只需将KEY\u DOWN替换为KEY\u UP即可。它解决了这个问题(至少对我来说)

使用KEY\u DOWN->Your code->KEY\u UP->empty Field

inputfield.addEventListener(Event.CHANGE, onChange);

private function onChange(e:Event):void {
if ( inputfield.text.charCodeAt(inputfield.text.length - 1) == 13 ) {
inputfield.text = inputfield.text.substr(0, inputfield.text.length - 1);
}
}
例如(讨厌的代码):


我知道这是一个很老的问题,仍然想分享我的解决方案。我在fla文件中禁用了文本框的多行功能。在那之后,我在文本框中没有收到任何回车

Message.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void
                     {
                        if(e.keyCode == Keyboard.ENTER)
                        {
                            // Your code...
                        }
                     });
Message.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent):void
                         {
                             if(e.keyCode == Keyboard.ENTER)
                             {
                                 Message.text = "";
                             }
                         });