キーボードが押されたか調べる
サンプルをダウンロード
■キーボードが押されたか調べる
キーボードが押されたか調べるには、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 |
