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



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

只是为了刷新它。但它也不会在删除时出现。我错过了什么?

TextEvent.TEXT_INPUT方法不会分派那些没有添加到文本输入中的内容。

你们朝着正确的方向添加了一个关键的监听器。如果您使用KEY_UP而不是KEY_DOWN,它应该按照您期望的方式工作。

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

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

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

最新更新