0

我不知道如何在标题中解释这一点,但我有一个 textArea 可以在我的应用程序的另一个 textArea 中生成文本。它生成的文本就好了:

gallery.txtArea1.addEventListener(TextEvent.TEXT_INPUT, displayEvent);

function displayEvent(event:TextEvent):void {
        picArea1.text = gallery.txtArea1.text + event.text;
}

但是当我想从动态文本区域 picArea1 中删除文本时,它不会捕获该 keyCode。所以我专门为此添加了另一个事件监听器:

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

function onKeyPressed(event:KeyboardEvent):void {
        if (event.keyCode == Keyboard.DELETE) {
            picArea1.text = gallery.txtArea1.text;
        }
}

只是为了刷新它。但它也没有接受删除。我错过了什么?

4

2 回答 2

1

TextEvent.TEXT_INPUT方法不会调度未添加到文本输入的内容。

改为添加一个关键侦听器,您朝着正确的方向前进。如果您使用 KEY_UP 而不是 KEY_DOWN,它应该按您期望的方式工作。

原因是,KEY_DOWN 在系统更改文本输入之前被调度/处理。或者,您可以使用 aTimer并在 KEY_DOWN 和 KEY_UP 事件之间更新它,如果您希望在按住删除/退格键以擦除多个字母时获得即时结果。

于 2012-09-06T22:22:36.260 回答
0

好的。奇怪的问题。当我改变时:

event.keyCode == Keyboard.DELETE

event.keyCode == 8

它开始工作了。我不知道为什么会这样,因为我导入了 Keyboard 类和所有东西。我不得不做一些小技巧来只从字符串中删除最后一个字符,因为我编码它的方式是获取整个字符串并将最后一个字符添加到末尾,然后重新采样整个事情并再次执行:

picArea1.text = gallery.txtArea1.text + event.text;

所以这是我的最终功能:

gallery.txtArea1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);

function onKeyPressed(event:KeyboardEvent):void {
        if (event.keyCode == 8) {
            var newString:String = gallery.txtArea1.text;
            picArea1.text = newString.substring(0, newString.length - 1);
        }

}
于 2012-09-07T03:52:19.667 回答