AS3 TextField - 将值设置为“”时不需要的回车

时间:2010-01-08 18:55:59

标签: actionscript-3 input textfield carriage-return

我有一个输入TextField,并且在舞台上有一个KeyboardEvent.KEY_DOWN偶数监听器来监听Keyboard.ENTER事件。事件侦听器将输入的文本添加到数组或其他任何内容,然后清除TextField。问题是当Enter键事件触发并且TextField值设置为“”时,它在TextField中留下一个回车符,并且光标位于第二行。 WTF?我一直在编写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 = "";
    }
}

8 个答案:

答案 0 :(得分:1)

只需用KEY_UP替换KEY_DOWN即可。它解决了问题(至少对我而言)

答案 1 :(得分:1)

使用KEY_DOWN - >你的代码 - > KEY_UP - >空场

一个例子(讨厌的代码):

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 = "";
                             }
                         });

答案 2 :(得分:0)

如果您能够输入回车符,则表示TextField是多行的,不是吗?

您是否尝试在KeyboardEvent.KEY_UP事件侦听器回调函数中清空输入文本?

答案 3 :(得分:0)

您是否正在点击输入文字字段?在这种情况下,可能是在键盘操作更新文本字段的值之前调用onKeyDown。您在onKeyDown中将文本字段设置为空字符串,然后flash为其添加一个新行。

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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);
}
}

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

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