トップページ > Flash入門 > マウス・キーボード関係(5)

キーボード入力

keyCodeを表示

キーボードが押されたかどうかを判定するには,画面自体(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;
			}
		}
		//================================================================
	}
}



前へ  戻る