キー入力に対応したイベント処理をしたい。
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)