键盘ENTER键不适用于tlf文本输入?

时间:2011-10-24 19:32:26

标签: flash actionscript-3 events keyboard tlf

我在舞台上有一个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');
    }
}

我的错误在哪里?

3 个答案:

答案 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。

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