Actionscript 3 在AS3的输入文本字段中按回车键

Actionscript 3 在AS3的输入文本字段中按回车键,actionscript-3,Actionscript 3,我想在用户填写AS3中的输入文本字段时捕捉回车键。 我想我必须这样做: inputText.addEventListener(Event. ? , func); function func(e:Event):void{ if(e. ? == "Enter"){ doSomething(); } } 但我找不到最好的办法。 顺便说一下,输入文本有一个限制: inputText.restrict = "0-9"; 我应该在限

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

    inputText.addEventListener(Event. ? , func);
    function func(e:Event):void{
       if(e. ? == "Enter"){
          doSomething();
       }
    }
但我找不到最好的办法。 顺便说一下,输入文本有一个限制:

inputText.restrict = "0-9";
我应该在限制中添加enter键吗

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

提前感谢。

您使用的是文本字段还是文本输入

按下Enter键时,TextInput将发送一个Enter事件。有关这方面的更多信息,请访问


我不确定这对文本字段是如何起作用的。

正确答案

当文本字段被聚焦时,您可以轻松地监听键盘事件

只需在文本字段中直接添加一个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();
   }
}
另请注意,textfields还发送其他有用的事件:

  • 当用户修改时(如果是输入文本字段)——Event.CHANGE
  • 当用户键入文本时(如果是输入文本字段)——TextEvent.text\u输入
  • 单击链接时(如果是HTML文本)--TextEvent.link
  • 当用户滚动时(如果其多行和内容不匹配)——Event.SCROLL

先前的错误答案:

我认为真正做你想做的事情的唯一方法是有点复杂

基本上,当按下Enter键时,您无法从常规文本字段中获取任何将触发的事件。你必须在附近工作

一个想法是在文本字段中收听焦点事件。当它有焦点时,你在舞台上为键盘事件添加一个监听器,并检查按下的键是否为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" )
    }
}

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

import fl.events.ComponentEvent

...

myListeningField.addEventListener(ComponentEvent.ENTER, listenerMethod);


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

我使用文本工具,然后设置该框为输入文本。我试图使用inputText.enter=函数(e:Object){bla},但它抛出错误#1056:无法在flash.text.TextField中创建属性enter。谢谢。我使用了:inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);函数处理程序(event:KeyboardEvent){if(event.charCode==13){doSomething();}}}并且它可以工作。谢谢。在发表这些胡说八道之前,请检查一下你的事实。这个问题已经有一年多的历史了,超过4000人被误导,认为这些简单的事情是困难的。事实上,这在使用AIR的iPhone上不起作用,你必须使用Event。更改文本字段,KeyboardEvent不起作用。此外,当软键盘上指示“回车”时,回车“\r”并不总是由Event.CHANGE指示。我不确定是否有可靠且一致的方法来检测车厢返回。