我在游戏中遇到一个相当令人沮丧的问题。
基本上这就是发生的事情:
1)我为一个字母“t”监听KeyboardEvent.KEY_DOWN。 (“t”带来团队聊天)
2)然后调用一个类使输入文本字段可见(创建时间轴)。
3)然后我将stage.focus转移到该输入文本。
除了字母“t”出现在我的输入文本字段中外,一切正常。
所以,我认为它捕获了KeyboardEvent并输入了“t”,因此我创建了一个事件监听器,在输入文本字段为stage.focus'd之后触发,通过调用inputText.text =“清除输入文本字段” “;
然而,它不起作用,而不是将其清除为“”它只留下“t”。
我实验了一些,并尝试在焦点事件后设置inputText.text =“CLEAR”。
一切奇怪的事情发生在说完了之后,输入文本字段显示“tCLEAR”,光标在t之后,当我输入更多时,它将“CLEAR”推向右边。
据我所知,任何文本字段动态或输入,如果你将其设置为“”,它应该清除它。但是在这种情况下它不是,它只是在t之后推动“”。
无论如何,我做了很多搜索,但无济于事。
我甚至尝试在TextEvent.TEXT_INPUT之后清除“”,甚至在按下“t”后删除KeyListener,仍然没有快乐。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以在event.stopImmediatePropogation()
处理程序中添加KeyboardEvent.KEY_DOWN
。或者,如果这样做无助于尝试使用KeyboardEvent.KEY_UP
事件来捕获其处理程序中带有event.stopImmediatePropogation()
的按下按钮。
修改强>
好吧,我不知道为什么用关键事件做到这一点非常重要。但我可以建议这个解决方案:
1)在密钥向下处理程序中将TextEvent.TEXT_INPUT
侦听器添加到TextField。
2)在文本输入处理程序中添加event.preventDefault();
并删除TextEvent.TEXT_INPUT
侦听器。
这样的事情:
function keyDownHandler(event:KeyboardEvent):void
{
...
stage.focus = tf;
tf.addEventListener(TextEvent.TEXT_INPUT, tf_textInputHandler);
}
function tf_textInputHandler(event:TextEvent):void
{
event.preventDefault();
tf.removeEventListener(TextEvent.TEXT_INPUT, tf_textInputHandler);
}
tf
是你的textField。