簡體   English   中英

在AS3的輸入文本字段中輸入按鍵

[英]Catch enter key press in input text field in AS3

當用戶填寫AS3中的輸入文本字段時,我想要按下回車鍵。 我想我必須做這樣的事情:

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

但我找不到最好的方法來做到這一點。 順便說一句,輸入文本有一個限制:

inputText.restrict = "0-9";

我應該在限制中添加回車鍵嗎?

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

提前致謝。

更正的答案

您可以輕松收聽文本字段聚焦時發生的鍵盤事件。

只需將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_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" )
    }
}

對於那些想知道如何使用TextInput字段而不是TextField處理“Enter”鍵的人來說,這是一個簡單的過程:

import fl.events.ComponentEvent

...

myListeningField.addEventListener(ComponentEvent.ENTER, listenerMethod);


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

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

按下enter時,TextInput將調度Enter事件。 有關這方面的更多信息,請訪問http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event :enter

我不確定這對於Textfield是如何工作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM