0

我在阶段有一个 tlf 文本输入,我想在按下输入键时为这个对象调度 ahndler,但我不能这样做

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');
    }
}

我的错误在哪里?

4

3 回答 3

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':' tl​​f_input_text',而不是'handler':' key_down_handler '或类似的东西。它将帮助其他人(以及您自己,从长远来看)阅读和理解您的代码。

于 2011-10-27T12:19:11.537 回答
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');
    }
}
于 2011-10-28T06:08:16.730 回答
0

我刚刚遇到了同样的问题。

为我解决它的最佳方法是将 (useCapture=true) 添加到事件侦听器。

所以这: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler);

变成这样: tlf.addEventListener(KeyboardEvent.KEY_DOWN,handler,true);

我不相信之前提供的 2 个答案令人满意。一个希望编码器停止使用 TLF,另一个希望他停止使用 KeyboardEvent。

参考: http ://forums.adobe.com/thread/826424

于 2013-10-01T13:27:33.007 回答