キー入力に対応したイベント処理をしたい。

keyCode プロパティと charCode プロパティを使用することで、どのキーが押されたかを判断し、その結果として他のアクションをトリガできます。keyCode プロパティは、キーボードのキーの値に対応する数値です。charCode プロパティは、現在の文字セットにおけるそのキーの数値です。デフォルトの文字セットは UTF-8 で、ASCII をサポートしています。キーコード値と文字値の主な違いは、キーコード値がキーボードの特定のキーを表すのに対し、文字値は特定の文字を表すことです。キーコード値では、キーパッドの 1 はキーボードの一番上の行の 1 とは異なりますが、キーボードの 1 と ! を生成するキーは同じです。文字値では、R と r は異なります。

キーとキーコードのマッピングはデバイスやオペレーティングシステムによって異なります。ASCII 値については、ActionScript マニュアルに掲載されています。

keyCode プロパティと charCode プロパティについて -- Flex 2

キーを入力すると、入力内容を表示するサンプルを作った。

ソースコード


package {
 
  import flash.display.*;
  import flash.events.*;
  import flash.text.*;
  import flash.utils.*;
  
  public class KeyEventSample extends Sprite {
 
    // メッセージ表示用
    private var message:TextField;
 
    public function KeyEventSample() {
 
      // 表示メッセージのスタイル
      var format:TextFormat = new TextFormat();
      format.bold = false;
      format.italic = false;
      format.size = 10;
      format.underline = false;
      format.font = "_等幅";
 
      // 表示メッセージ
      message = new TextField();
      message.text = "";
      message.autoSize = TextFieldAutoSize.LEFT;
      message.selectable = false;
      message.setTextFormat(format);
      addChild(message);
 
      // イベントの設定
      stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
      stage.addEventListener(KeyboardEvent.KEY_UP, keyup);  
 
      // タイマーで定期的に表示メッセージを消去
      var timer:Timer=new Timer(2000,0);
      timer.addEventListener(TimerEvent.TIMER, clear);
      timer.start();
    }
 
    private function keydown(event:KeyboardEvent):void {
      display("keydown");
      display("[Shift]=" + event.shiftKey);
      display("[Ctrl]=" + event.ctrlKey);
      display("[CharCode]=" + event.charCode);
      display("[KeyCode]=" + event.keyCode); // 37← 38↑ 39→ 40↓
      display("[KeyLocation]=" + event.keyLocation);
    }
 
    private function keyup(event:KeyboardEvent):void {
      display("keyup");
      display("[Shift]=" + event.shiftKey);
      display("[Ctrl]=" + event.ctrlKey);
      display("[CharCode]=" + event.charCode);
      display("[KeyCode]=" + event.keyCode);
      display("[KeyLocation]=" + event.keyLocation);
    }
 
    private function display(str:String):void{
      message.appendText(str);
      message.appendText("\n");
    }
 
    private function clear(evt:TimerEvent):void {
      message.text = "";
    }
 
  }
}

tags: zlashdot Flash Flash Flex

Posted by NI-Lab. (@nilab)