如何从AS3中的textArea中删除文本,从另一个textArea生成

时间:2012-09-06 22:02:15

标签: actionscript-3

我不知道如何在标题中解释这一点,但我有一个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;
        }
}

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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);
        }

}