我在舞台上有一个tlf文本输入,当我按下输入键时我想要这个对象的调度处理程序,但我不能这样做
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Sprite;
tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent)
{
if (event.keyCode = Keyboard.ENTER)
{
trace('enter key is detect');
}
}
我的错误在哪里?
答案 0 :(得分:1)
运算符'='用于分配,而不是比较。 EQUAL TO运算符为'=='。所以,在你的代码中:
if (event.keyCode = Keyboard.ENTER)
应该是:
if (event.keyCode == Keyboard.ENTER)
假设你在舞台上有一个文字输入,并且它被称为'tlf',这将有效:
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Sprite;
tlf.addEventListener(KeyboardEvent.KEY_DOWN,key_down_handler);
function key_down_handler(ev:KeyboardEvent)
{
if (ev.keyCode == Keyboard.ENTER)
{
trace('enter key!!!!');
}
}
一个建议:尝试为变量和函数赋予更有意义的名称,例如,而不仅仅是'tlf',如果它是输入文本字段:' tlf_input_text'而不仅仅是'handler': ' key_down_handler '或类似的内容。它将帮助其他人(以及您自己,从长远来看)阅读和理解您的代码。
答案 1 :(得分:1)
TLFText以不同于经典文本的方式处理Enter键。对于TLF使用此:
tlf.addEventListener(TextEvent.TEXT_INPUT, textInputHandler);
function textInputHandler(evt:TextEvent):void {
if (evt.text=="\r") {
trace('THE ENTER KEY WORKS NOW');
}
}
答案 2 :(得分:0)
我刚遇到同样的问题。
为我解决这个问题的最佳方法是将(useCapture = true)添加到事件监听器。
所以这个:
tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);
成为这样的:
tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler,true);
我不相信以前提供的2个答案是令人满意的。 一个人希望编码器停止使用TLF,另一个希望他停止使用KeyboardEvent。