3

我有一个输入 TextField 并且在舞台上有一个 KeyboardEvent.KEY_DOWN 甚至监听器来监听 Keyboard.ENTER 事件。事件侦听器将输入的文本添加到数组或其他内容中,然后清除 TextField。问题是当 Enter 键事件触发并且 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 = "";
    }
}
4

8 回答 8

1

只需将 KEY_DOWN 替换为 KEY_UP。它解决了问题(至少对我来说)

于 2011-06-09T10:00:57.243 回答
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 = "";
                             }
                         });
于 2011-06-29T21:51:23.693 回答
0

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

于 2013-10-18T05:56:06.043 回答
0

如果您处于 Flash 创作模式(在 IDE 中),则需要在测试时取消选中 Control -> Disable Keyboard Shortcuts。还可以尝试为KEY_UP.

于 2010-02-10T05:24:05.663 回答
0

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

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

于 2010-01-09T01:12:23.023 回答
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);
}
}
于 2010-04-29T14:59:20.937 回答
0

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

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

于 2010-01-09T06:58:49.197 回答
-1

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

于 2011-03-01T17:09:11.327 回答