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