キーボードが押されたか調べる
サンプルをダウンロード
■キーボードが押されたか調べる
キーボードが押されたか調べるには、KeyboardEvent.KEY_DOWN イベントを使用します。
登録した関数の引数から KeyboardEvent オブジェクトが得られます。
キーを押しっぱなし時の入力検出タイミングは、タイピング風となります。
キーボードが押されたか調べる
import flash.events.KeyboardEvent;
// キーボードを押したときに実行される関数
function KeyDownFunc(e:KeyboardEvent):void{
trace("キーボードが押された");
};
// イベントを登録
stage.addEventListener(KeyboardEvent.KEY_DOWN , KeyDownFunc);
■KeyboardEvent オブジェクトについて
KeyboardEvent オブジェクトには、以下のプロパティがあります。 (一部省略)
プロパティ | 型 | 解説 |
keyCode | uint | キーコード |
keyLocation | uint | Shiftキーなど 左側=1 か 右側=2 か |
ctrlKey | Boolean | Ctrlキーの押下状態 |
shiftKey | Boolean | Shiftキーの押下状態 |
altKey | Boolean | Altキーの押下状態(未サポート) |
押されたキーのキーコードを調べる
import flash.events.KeyboardEvent;
// キーボードを押したときに実行される関数
function KeyDownFunc(e:KeyboardEvent):void{
// キーコード
var key_code:uint = e.keyCode;
trace("code:" + key_code);
// Shiftキーなど 左側=1 か 右側=2 か
var key_location:uint = e.keyLocation;
trace("location:" + key_location);
// Ctrlキーの押下状態
var ctrl_key:Boolean = e.ctrlKey;
trace("ctrl:" + ctrl_key);
// Shiftキーの押下状態
var shift_key:Boolean = e.shiftKey;
trace("shift:" + shift_key);
// Altキーの押下状態
var alt_key:Boolean = e.altKey;
trace("alt:" + alt_key);
};
// イベントを登録
stage.addEventListener(KeyboardEvent.KEY_DOWN , KeyDownFunc);
■stage 以外のインスタンスに登録した場合
stage オブジェクト以外のインスタンスに登録した場合、フォーカスが無いとイベントが動作しません。
フォーカスを与えるには、stage.focus プロパティを使用します。
stage.focus に、フォーカスを与えたいインスタンスをセットします。
stage オブジェクト以外でのイベントの登録
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
// ムービークリップを作成する
var mc : MovieClip = new MovieClip();
// ステージにムービークリップを配置する
stage.addChild(mc);
// ムービークリップにフォーカスを与える
stage.focus = mc;
// ムービークリップにイベントを登録
mc.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent):void{
trace(e.keyCode);
});
キーボードが離されたか調べる
サンプルをダウンロード
■キーボードが離されたか調べる
キーボードが離されたか調べるには、KeyboardEvent.KEY_UP イベントを使用します。
登録した関数の引数から KeyboardEvent オブジェクトが得られます。
キーボードが離されたか調べる
import flash.events.KeyboardEvent;
// キーボードを離したときに実行される関数
function KeyUpFunc(e:KeyboardEvent):void{
trace("キーボードが離された");
};
// イベントを登録
stage.addEventListener(KeyboardEvent.KEY_UP , KeyUpFunc);
■KeyboardEvent オブジェクトについて
KeyboardEvent オブジェクトには、以下のプロパティがあります。 (一部省略)
プロパティ | 型 | 解説 |
keyCode | uint | キーコード |
keyLocation | uint | Shiftキーなど 左側=1 か 右側=2 か |
ctrlKey | Boolean | Ctrlキーの押下状態 |
shiftKey | Boolean | Shiftキーの押下状態 |
altKey | Boolean | Altキーの押下状態(未サポート) |
離されたキーのキーコードを調べる
import flash.events.KeyboardEvent;
// キーボードを離したときに実行される関数
function KeyUpFunc(e:KeyboardEvent):void{
// キーコード
var key_code:uint = e.keyCode;
trace("code:" + key_code);
// Shiftキーなど 左側=1 か 右側=2 か
var key_location:uint = e.keyLocation;
trace("location:" + key_location);
// Ctrlキーの押下状態
var ctrl_key:Boolean = e.ctrlKey;
trace("ctrl:" + ctrl_key);
// Shiftキーの押下状態
var shift_key:Boolean = e.shiftKey;
trace("shift:" + shift_key);
// Altキーの押下状態
var alt_key:Boolean = e.altKey;
trace("alt:" + alt_key);
};
// イベントを登録
stage.addEventListener(KeyboardEvent.KEY_UP , KeyUpFunc);
■stage 以外のインスタンスに登録した場合
stage オブジェクト以外のインスタンスに登録した場合、フォーカスが無いとイベントが動作しません。
フォーカスを与えるには、stage.focus プロパティを使用します。
stage.focus に、フォーカスを与えたいインスタンスをセットします。
stage オブジェクト以外でのイベントの登録
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
// ムービークリップを作成する
var mc : MovieClip = new MovieClip();
// ステージにムービークリップを配置する
stage.addChild(mc);
// ムービークリップにフォーカスを与える
stage.focus = mc;
// ムービークリップにイベントを登録
mc.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent):void{
trace(e.keyCode);
});
キーボードが押しっぱなしか調べる
サンプルをダウンロード
■キーボードが押しっぱなしか調べる
1.配列を用意する
配列を1つ用意します。
この配列に、キーボードの入力状態を記録していきます。
配列を用意する
// キーボードの入力状態を記録する配列
var input_key_buffer:Array = new Array();
2.キーボードの入力状態を、イベントリスナーで監視する
キーボードが押されたか調べるには、KeyboardEvent.KEY_DOWN イベントを使用します。
キーボードが離されたか調べるには、KeyboardEvent.KEY_UP イベントを使用します。
2つのイベントを使って、キーボードの入力状態を監視します。
キーボードの入力状態を監視する
import flash.events.KeyboardEvent;
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent) :void{
trace("キーボードが押された");
});
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent) :void{
trace("キーボードが離された");
});
3.入力されたキー情報を配列に記録する
登録したコールバック関数の引数から、KeyboardEvent オブジェクトが得られます。
KeyboardEvent クラスの keyCode プロパティから、入力されたキーのキーコードが取得できます。
keyCode プロパティの値を使って、配列の番地にアクセスします。
「キーが押されたら true」、「キーが離されたら false」に変更します。
入力されたキー情報を配列に記録する
import flash.events.KeyboardEvent;
// キーボードの入力状態を記録する配列
var input_key_buffer:Array = new Array();
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = true;
});
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = false;
});
4.Flash が非アクティブか調べる
キーボードを押しながら、Flash を非アクティブにすると、押しっぱなしと判定されてしまいます。
Flash が非アクティブになったときは、配列に記録した入力情報をクリアします。
Flash が非アクティブになる瞬間を調べるには、Event.DEACTIVATE イベントを使用します。
ウィンドウが非アクティブになる瞬間を調べる
import flash.events.KeyboardEvent;
import flash.events.Event;
// キーボードの入力状態を記録する配列
var input_key_buffer:Array = new Array();
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = true;
});
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = false;
});
// Flash が非アクティブ時に呼び出されるイベント
stage.addEventListener(Event.DEACTIVATE , function (e:Event) :void{
// 配列をクリアする
input_key_buffer = new Array();
});
5.キーボードの入力状態を調べる
最後に、調べたいキーコード番号を使って、配列の番地にアクセスします。
キーボードが押されているか調べる
// キーボードが押されているか調べる関数
function KeyIsDown(key_code:uint) :Boolean{
if(input_key_buffer[key_code]) return true;
return false;
}
結果が真であれば、キーボードが押されています。
結果が偽であれば、キーボードが離されています。
毎フレーム特定のキーが押されているか調べる
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.events.Event;
// ------------------------------------------------------------
// キーボードの入力を監視する処理
// ------------------------------------------------------------
// キーボードの入力状態を記録する配列
var input_key_buffer:Array = new Array();
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = true;
});
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = false;
});
// Flash が非アクティブ時に呼び出されるイベント
stage.addEventListener(Event.DEACTIVATE , function (e:Event) :void{
// 配列をクリアする
input_key_buffer = new Array();
});
// キーボードが押されているか調べる関数
function KeyIsDown(key_code:uint) :Boolean{
if(input_key_buffer[key_code]) return true;
return false;
}
// ------------------------------------------------------------
// 毎フレーム実行する
// ------------------------------------------------------------
stage.addEventListener(Event.ENTER_FRAME , function (e:Event) :void{
// Aキーが押されているか調べる
if(KeyIsDown(65)){
trace("Aキーが押されている");
}else{
trace("Aキーが離されている");
}
// スペースキーが押されているか調べる
if(KeyIsDown(Keyboard.SPACE)){
trace("スペースキーが押されている");
}else{
trace("スペースキーが離されている");
}
});
スプライトを、キーボードで移動する例です。
上下左右キーを押すと、スプライトを移動できます。
スプライトを上下左右キーで移動する
import flash.display.Sprite;
import flash.display.Graphics;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
import flash.events.Event;
// ------------------------------------------------------------
// キーボードの入力を監視する処理
// ------------------------------------------------------------
// キーボードの入力状態を記録する配列
var input_key_buffer:Array = new Array();
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = true;
});
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent) :void{
input_key_buffer[e.keyCode] = false;
});
// Flash が非アクティブ時に呼び出されるイベント
stage.addEventListener(Event.DEACTIVATE , function (e:Event) :void{
// 配列をクリアする
input_key_buffer = new Array();
});
// キーボードが押されているか調べる関数
function KeyIsDown(key_code:uint) :Boolean{
if(input_key_buffer[key_code]) return true;
return false;
}
// ------------------------------------------------------------
// 初期化
// ------------------------------------------------------------
// スプライトを作成する
var sprite:Sprite = new Sprite();
// ステージにスプライトを登録する
stage.addChild(sprite);
// 矩形をレンダリングする
var g:Graphics = sprite.graphics;
g.lineStyle (5, 0xAA0000, 1.0);
g.beginFill (0xFF4444, 1.0);
g.drawRect (0,0,100,100);
// ------------------------------------------------------------
// 毎フレーム実行する
// ------------------------------------------------------------
stage.addEventListener(Event.ENTER_FRAME , function (e:Event) :void{
// 上キーが押された
if(KeyIsDown(Keyboard.UP)) sprite.y -= 10;
// 下キーが押された
if(KeyIsDown(Keyboard.DOWN)) sprite.y += 10;
// 左キーが押された
if(KeyIsDown(Keyboard.LEFT)) sprite.x -= 10;
// 右キーが押された
if(KeyIsDown(Keyboard.RIGHT)) sprite.x += 10;
});
キーコードの一覧表
サンプルをダウンロード
■キーコードの一覧表
KeyboardEvent オブジェクトの keyCode プロパティから得られる、キーコードの一覧表です。
キーボードを押されたときにキーコードを取得する
import flash.events.KeyboardEvent;
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent):void{
// キーコードを出力
trace(e.keyCode);
});
■英数字キー
A~Z、0~9までのキーコードの一覧表です。
キー | keyCode |
0 | 48 |
1 | 49 |
2 | 50 |
3 | 51 |
4 | 52 |
5 | 53 |
6 | 54 |
7 | 55 |
8 | 56 |
9 | 57 |
A | 65 |
B | 66 |
C | 67 |
D | 68 |
E | 69 |
F | 70 |
G | 71 |
H | 72 |
I | 73 |
J | 74 |
K | 75 |
L | 76 |
M | 77 |
N | 78 |
O | 79 |
P | 80 |
Q | 81 |
R | 82 |
S | 83 |
T | 84 |
U | 85 |
V | 86 |
W | 87 |
X | 88 |
Y | 89 |
Z | 90 |
■テンキー
テンキーのキーコードの一覧表です。
キー | keyCode |
0 | 96 |
1 | 97 |
2 | 98 |
3 | 99 |
4 | 100 |
5 | 101 |
6 | 102 |
7 | 103 |
8 | 104 |
9 | 105 |
* | 106 |
+ | 107 |
Enter | 108 |
- | 109 |
. | 110 |
/ | 111 |
■ファンクションキー
ファンクションキーのキーコードの一覧表です。
キー | keyCode |
F1 | 112 |
F2 | 113 |
F3 | 114 |
F4 | 115 |
F5 | 116 |
F6 | 117 |
F7 | 118 |
F8 | 119 |
F9 | 120 |
F10 | 121 |
F11 | 122 |
F12 | 123 |
F13 | 124 |
F14 | 125 |
F15 | 126 |
■その他のキー
その他のキーコードの一覧表です。
キー | keyCode |
BackSpace | 8 |
Tab | 9 |
Clear | 12 |
Enter | 13 |
Command | 15 |
Shift | 16 |
Ctrl | 17 |
Alt | 18 |
CapsLock | 20 |
Esc | 27 |
スペースバー | 32 |
PageUp | 33 |
PageDown | 34 |
End | 35 |
Home | 36 |
← (左矢印) | 37 |
↑ (上矢印) | 38 |
→ (右矢印) | 39 |
↓ (下矢印) | 40 |
Insert | 45 |
Delete | 46 |
Help | 47 |
NumLock | 144 |
: * | 186 |
; + | 187 |
, < | 188 |
- = | 189 |
. > | 190 |
/ ? | 191 |
@ ` | 192 |
[ { | 219 |
\ | | 220 |
] } | 221 |
^ ~ | 222 |
■キーコードの定数
キーコードの定数一覧表です。
キー | プロパティ |
BackSpace | Keyboard.BACKSPACE |
CapsLock | Keyboard.CAPS_LOCK |
Control | Keyboard.CONTROL |
Delete | Keyboard.DELETE |
End | Keyboard.END |
Enter | Keyboard.ENTER |
Escape | Keyboard.ESCAPE |
F1 | Keyboard.F1 |
F2 | Keyboard.F2 |
F3 | Keyboard.F3 |
F4 | Keyboard.F4 |
F5 | Keyboard.F5 |
F6 | Keyboard.F6 |
F7 | Keyboard.F7 |
F8 | Keyboard.F8 |
F9 | Keyboard.F9 |
F10 | Keyboard.F10 |
F11 | Keyboard.F11 |
F12 | Keyboard.F12 |
F13 | Keyboard.F13 |
F14 | Keyboard.F14 |
F15 | Keyboard.F15 |
Home | Keyboard.HOME |
Insert | Keyboard.INSERT |
NUMPAD 0 | Keyboard.NUMPAD_0 |
NUMPAD 1 | Keyboard.NUMPAD_1 |
NUMPAD 2 | Keyboard.NUMPAD_2 |
NUMPAD 3 | Keyboard.NUMPAD_3 |
NUMPAD 4 | Keyboard.NUMPAD_4 |
NUMPAD 5 | Keyboard.NUMPAD_5 |
NUMPAD 6 | Keyboard.NUMPAD_6 |
NUMPAD 7 | Keyboard.NUMPAD_7 |
NUMPAD 8 | Keyboard.NUMPAD_8 |
NUMPAD 9 | Keyboard.NUMPAD_9 |
NUMPAD + | Keyboard.NUMPAD_ADD |
NUMPAD . | Keyboard.NUMPAD_DECIMAL |
NUMPAD / | Keyboard.NUMPAD_DIVIDE |
NUMPAD Enter | Keyboard.NUMPAD_ENTER |
NUMPAD * | Keyboard.NUMPAD_MULTIPLY |
NUMPAD - | Keyboard.NUMPAD_SUBTRACT |
Page Up | Keyboard.PAGE_UP |
Page Down | Keyboard.PAGE_DOWN |
Arrow Up | Keyboard.UP |
Arrow Down | Keyboard.DOWN |
Arrow Left | Keyboard.LEFT |
Arrow Right | Keyboard.RIGHT |
Shift | Keyboard.SHIFT |
Space | Keyboard.SPACE |
Tab | Keyboard.TAB |
使用例です。
スペースキーが押されたか調べる
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
// キーボードを押したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_DOWN , function (e:KeyboardEvent):void{
if(e.keyCode == Keyboard.SPACE){
trace("スペースキーが押された");
}
});
Aキーが離されたか調べる
import flash.events.KeyboardEvent;
// キーボードを離したときに実行されるイベント
stage.addEventListener(KeyboardEvent.KEY_UP , function (e:KeyboardEvent):void{
if(e.keyCode == 65){
trace("Aキーが離された");
}
});
■Adobe AIR 用キーコードの一覧表
Adobe AIR 専用のキーコードの定数一覧表です。
キー | プロパティ |
Command (Macintosh) | Keyboard.COMMAND |
Alt | Keyboard.ALTERNATE |
NumPad | Keyboard.NUMPAD |
テンキー 0 | Keyboard.NUMBER_0 |
テンキー 1 | Keyboard.NUMBER_1 |
テンキー 2 | Keyboard.NUMBER_2 |
テンキー 3 | Keyboard.NUMBER_3 |
テンキー 4 | Keyboard.NUMBER_4 |
テンキー 5 | Keyboard.NUMBER_5 |
テンキー 6 | Keyboard.NUMBER_6 |
テンキー 7 | Keyboard.NUMBER_7 |
テンキー 8 | Keyboard.NUMBER_8 |
テンキー 9 | Keyboard.NUMBER_9 |
A | Keyboard.A |
B | Keyboard.B |
C | Keyboard.C |
D | Keyboard.D |
E | Keyboard.E |
F | Keyboard.F |
G | Keyboard.G |
H | Keyboard.H |
I | Keyboard.I |
J | Keyboard.J |
K | Keyboard.K |
L | Keyboard.L |
M | Keyboard.M |
N | Keyboard.N |
O | Keyboard.O |
P | Keyboard.P |
Q | Keyboard.Q |
R | Keyboard.R |
S | Keyboard.S |
T | Keyboard.T |
U | Keyboard.U |
V | Keyboard.V |
W | Keyboard.W |
X | Keyboard.X |
Y | Keyboard.Y |
Z | Keyboard.Z |
: * | Keyboard.SEMICOLON |
; + | Keyboard.EQUAL |
, < | Keyboard.COMMA |
- = | Keyboard.MINUS |
/ ? | Keyboard.SLASH |
@ ` | Keyboard.BACKQUOTE |
[ { | Keyboard.LEFTBRACKET |
\ | | Keyboard.BACKSLASH |
] } | Keyboard.RIGHTBRACKET |
^ ~ | Keyboard.QUOTE |