• ベストアンサー

1つのボタンに複数のkey割り当て

新たに質問です。 keyPressでは、1つのボタンに複数のキーを割り当てできるんでしょうか?それとも他に方法があるんでしょうか? 10種以上のキーを使用させるようにする予定なのですが、キーの数だけボタンが必要となると煩瑣に感じてしまいますし、そのボタンは見えない様にする為、余計無意味に感じてしまいます。 keyPressでなくても、他にこんな方法があるよっていうアドバイスでも宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Key クラスの onKeyUp イベントを利用して、キー入力を常時監視してはいかがでしょう。キー入力検出のためのムービークリップを作る必要はなくなります。 例えば、フレーム1に  //リスナーオブジェクトの生成と登録  key_listener = new Object;  Key.addListener( key_listener );  //キーが押された時の処理  key_listener.onKeyUp = function ()  {   var key_code;   //最後に押されたキーのコードを取得   key_code = Key.getCode();   //キー判定   if( key_code >= 48 && key_code <= 57 )   {    trace( "数字" );   }   else if( key_code >= 65 && key_code <= 90 )   {    trace( "アルファベット" );   }   else   {    trace( "その他" );   }   //Escキーで判定をやめる   if( key_code == Key.ESCAPE )   {    if( Key.removeListener( key_listener ) )    {     trace( "キー判定終了" );    }   }  }; (↑このスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) ・・・というスクリプトを設定し、「ムービープレビュー」の「制御」→「キーボードショートカットを無効」にチェックを入れて、動作を確認してみてください。 (「ムービープレビュー」では、Enter や Tab などの特殊キーの反応が鈍い場合もあります) 0~9のキーを押すと「数字」、A~Zのキーを押すと「アルファベット」、それ以外のキーを押すと「その他」と、「出力」ウィンドウに表示されます。 各キーに割り当てられているコードは、ヘルプの「 ActionScript ユーザーガイド」→「キーボードのキーとキーコードの値の概要」をご参照ください。 このキー入力判定は key_listener オブジェクトが存在している限り有効です。 キーの判定が不要になったら、  Key.removeListener( key_listener ); で、リスナーオブジェクトを削除してください。上記のスクリプトでは、Esc キーを押すとリスナーオブジェクトが削除され、以降はキー判定が行われなくなります。

rattymouse
質問者

お礼

ご返答いただいて有難うございます。 なんと、こんな機能があったとは。 はじめ、rootにloadMovieするとListenerはクリアされるのかと思い、Movie読込みごとに最初のフレームに同じScript書いてしまいましたが、Listenerは、esc押すまで本当に生きているんですね。 本当に便利な機能です。有難うございます。

関連するQ&A