我不知道如何在标题中解释这一点,但我有一个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;
}
}
只是为了刷新它。但它也没有取消删除。我错过了什么?
答案 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);
}
}