在AS3的输入文本字段中输入按键

时间:2010-02-19 15:22:47

标签: actionscript-3

我想在用户填写AS3中的输入文本字段时按下回车键。 我想我必须做这样的事情:

    inputText.addEventListener(Event. ? , func);
    function func(e:Event):void{
       if(e. ? == "Enter"){
          doSomething();
       }
    }

但我找不到最好的方法来做到这一点。 顺便说一句,输入文本有一个限制:

inputText.restrict = "0-9";

我应该在限制中添加回车键吗?

inputText.restrict = "0-9\n";

提前致谢。

3 个答案:

答案 0 :(得分:33)

更正后的答案

您可以轻松收听文本字段聚焦时发生的键盘事件。

只需将KEY_DOWN事件直接添加到文本字段,然后执行任何操作。

// get key presses only when the textfield is being edited
inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent){

   // if the key is ENTER
   if(event.charCode == 13){

       // your code here
       doSomething();
   }
}

另外,文本字段还会发送其他有用的事件:

  • 当用户修改时(如果是输入文本字段) - Event.CHANGE
  • 当用户输入文本时(如果是输入文本字段) - TextEvent.TEXT_INPUT
  • 点击链接时(如果是HTML文本) - TextEvent.LINK
  • 当用户滚动时(如果其多行和内容不适合) - Event.SCROLL

上一个错误答案:

我认为实际做你想做的事的唯一方法是有点复杂。

基本上,当按下Enter键时,您无法从常规TextField中获取任何事件。你必须做些工作......

一个想法是听取文本领域的焦点事件。当它具有焦点时,你可以为舞台上的键盘事件添加一个监听器,并检查按下的键是否为Enter,如果是,则触发你的动作,否则跳过。

示例代码:

inputText.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
inputText.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);

function textInputHandler(event:FocusEvent):void {
    //our textfield has focus, we want to listen for keyboard events.
    stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}

function textInputHandlerOut(event:FocusEvent):void {
    //our textfield lost focus, remove our listener.
    stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}

function keyDownHandler( e:KeyboardEvent ):void{
    //a key was pressed, check if it was Enter => charCode 13.
    if( e.charCode == 13 ){
      //ok, enter was pressed. Do your thing.
      trace("We pressed enter, doSomething" )
    }
}

答案 1 :(得分:2)

对于那些想知道如何使用TextInput字段而不是TextField来处理“Enter”键的人来说,这是一个简单的过程:

import fl.events.ComponentEvent

...

myListeningField.addEventListener(ComponentEvent.ENTER, listenerMethod);


function listenerMethod(e:Event):void{
    //DO SOME STUFF
}

答案 2 :(得分:0)

您使用的是文本字段还是TextInput?

当按下enter时,TextInput将调度Enter事件。有关这方面的更多信息,请访问http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event:enter

我不确定这对于Textfield是如何工作的。