1

我在游戏中的聊天课程遇到了一个相当令人沮丧的问题。

基本上这是正在发生的事情:

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,仍然没有乐趣。

任何帮助,将不胜感激。

4

1 回答 1

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

于 2012-06-06T07:06:08.343 回答