トップページ > Flash入門 > マウス・キーボード関係(5)
キーボードが押されたかどうかを判定するには,画面自体(stage)に対して KeyboardEvent.KEY_DOWNイベントを登録します。 各キーに割り当てられた番号(keyCode)を見ることで,どのキーを押されたのかを判定することができます。 とりあえず,画面にkeyCodeを表示するFlashを作ってみます。
KEY_DOWNイベントで呼ばれる関数(今回は“onKeyDown”という名前)の引数として,KeyboardEvent型のパラメータ が(今回は適当に“e”という名前にしています)あります。 この引数の中にkeyCodeパラメータがあるので,これを表示するだけです。
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.events.Event;
import flash.text.*;
//キーボード関係のイベントクラスを読み込む
import flash.events.KeyboardEvent;
//画面サイズと背景色,フレームレートを設定
[SWF(width="300", height="300", frameRate = "60", backgroundColor="0xffffcc")]
public class Main extends Sprite
{
//キーコード表示用テキストフィールド
public var tf:TextField = new TextField();
//main関数
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
//コンストラクタ
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
//フォント設定
var format:TextFormat = new TextFormat();
format.size = 48;
//tfにフォント設定を登録
tf.defaultTextFormat = format;
//テキストフィールドの寸法は自動調整
tf.autoSize = TextFieldAutoSize.LEFT;
//テキストフィールドの位置決め
tf.x = 5;
tf.y = 110;
//初期表示内容
tf.text = "keyCode = ";
//stageに追加
addChild(tf);
//============================================================
//stageにキーボードイベントを登録
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
//============================================================
}
//================================================================
//なにかキーが押された時に呼ばれる関数
private function onKeyDown(e:KeyboardEvent):void
{
tf.text = "keyCode = " + e.keyCode.toString();
}
//================================================================
}
}
カーソルキー(↑↓→←)の入力で画像が動くようにします。 KeyboardEvent.KEY_DOWNで呼ばれる関数(“onKeyDown()”)の中で, カーソルキーに対応して画像の座標を変更します。
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.events.Event;
//キーボード関係のイベントクラスを読み込んでおく
import flash.events.KeyboardEvent;
//画面サイズと背景色,フレームレートを設定
[SWF(width="300", height="300", frameRate = "60", backgroundColor="0xffffcc")]
public class Main extends Sprite
{
//画像ファイルを読み込む
[Embed(source = "./ClearBall_pink.png")]
public var ballImg:Class;
//"ball"をクラス変数として定義
public var ball:Bitmap = new ballImg();
//main関数
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
//コンストラクタ
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
//画像を表示
addChild(ball);
//============================================================
//stageにキーボードイベントを登録
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
//============================================================
}
//================================================================
//なにかキーボードが押された時に呼ばれる関数
private function onKeyDown(e:KeyboardEvent):void
{
//"→"キーの時
if (e.keyCode == 39)
{
ball.x += 2;
}
//"←"キーの時
else if (e.keyCode == 37)
{
ball.x -= 2;
}
//"↑"キーの時
else if (e.keyCode == 38)
{
ball.y -= 2;
}
//"↓"キーの時
else if (e.keyCode == 40)
{
ball.y += 2;
}
}
//================================================================
}
}