ユーザーがAS3の入力テキストフィールドに入力しているときにEnterキーが押されたのをキャッチしたいと思います。私はこのようなことをしなければならないと思います:
inputText.addEventListener(Event. ? , func);
function func(e:Event):void{
if(e. ? == "Enter"){
doSomething();
}
}
しかし、私はこれを行うための最良の方法を見つけることができません。ちなみに、入力テキストには制限があります。
inputText.restrict = "0-9";
制限にEnterキーを追加する必要がありますか?
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();
}
}
別の注記として、テキストフィールドは他の有用なイベントも送信します。
前の間違った答え:
実際にやりたいことをやる唯一の方法は少し複雑だと思います。
基本的に、Enterキーが押されたときに発生する通常のTextFieldからイベントを取得することはできません。あなたは回避策をしなければなりません...
1つのアイデアは、フォーカスイベントのテキストフィールドをリッスンすることです。フォーカスがある場合は、キーボードイベントのステージにリスナーを追加し、押されたキーが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" )
}
}
TextFieldではなくTextInputフィールドを使用して「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 を参照してください。
これがテキストフィールドでどのように機能するかわかりません。