キーで制御

ボタンをマウスで押す変わりにキー操作でおこなう


on(keyPress "<キー>"){
 //キーコードが押された時の処理
}

onClipEvent (load) {
	var keyMove:Number = 5;
}

on (keyPress "<Left>") {
	this._x -= keyMove;
}
on (keyPress "<Right>") {
	this._x += keyMove;
}
on (keyPress "<Up>") {
	this._y -= keyMove;
}
on (keyPress "<Down>") {
	this._y += keyMove;
}

キーボードから反応を得る

2つの方法があります。

  1. 毎フレームが実行されるイベントの中でキーが押されているか判定する
  2. キーが押されるごとにイベントが呼ばれるように登録する
key.isDown()関数
  • if文を使ってキーボードが押されているかを判別します



if( key.isDown(キーコード)){
 //キーコードが押された時の処理
}

onClipEvent (load) {
	var keyMove:Number = 5;
}

onClipEvent (enterFrame) {
//キーが押されているか調べる
	if (Key.isDown(Key.LEFT)) {
		this._x -= keyMove;
	}
	if (Key.isDown(Key.RIGHT)) {
		this._x += keyMove;
	}
	if (Key.isDown(Key.UP)) {
		this._y -= keyMove;
	}
	if (Key.isDown(Key.DOWN)) {
		this._y += keyMove;
	}
}


キーが押されているかをずっと調べる

onClipEvent (load) {
	var keyMove:Number = 5;
}

onClipEvent (enterFrame) {
	if (Key.isDown(Key.LEFT) == true) {
		this._x -= keyMove;
	}
	if (Key.isDown(Key.RIGHT) == true) {
		this._x += keyMove;
	}
	if (Key.isDown(Key.UP) == true) {
		this._y -= keyMove;
	}
	if (Key.isDown(Key.DOWN) == true) {
		this._y += keyMove;
	}
}


key.getCode()でキーが押されているかを調べる


onClipEvent (keyDown) {
 //何かキーが押されて
 if (Key.getCode() == Key.LEFT) {
  //それが「←」キーだったら実行する
 }
}

onClipEvent (load) {
	var keyMove:Number = 5;
}

onClipEvent (keyDown) {
	if (Key.getCode() == Key.LEFT) {
		this._x -= keyMove;
	}
	if (Key.getCode() == Key.RIGHT) {
		this._x += keyMove;
	}
	if (Key.getCode() == Key.UP) {
		this._y -= keyMove;
	}
	if (Key.getCode() == Key.DOWN) {
		this._y += keyMove;
	}
}


switch文で読みやすくする

onClipEvent (load) {
	var keyMove:Number = 5;
}

onClipEvent (keyDown) {
	switch (Key.getCode()) {
		case Key.LEFT:
			this._x -= keyMove;
			break;
		case Key.RIGHT:
			this._x += keyMove;
			break;
		case Key.UP:
			this._y -= keyMove;
			break;
		case Key.DOWN:
			this._y += keyMove;
			break;
	}
}

匿名関数(イベントハンドラメソッド)でも記述はできますが、ムービークリップにフォーカスがあるときしかキー入力を受け付けません。

イベントリスナーにイベントオブジェクトを登録

キーイベントを処理するリスナーオブジェクトを作成し、キーイベントに登録します。

  • フレームアクション
var keyMove = 5;

myKey = new Object();
myKey.onKeyDown = function() {
	switch (Key.getCode()) {
	case Key.UP :
		banana_mc._y -= keyMove;
		break;
	case Key.DOWN :
		banana_mc._y += keyMove;
		break;
	case Key.RIGHT :
		banana_mc._x += keyMove;
		break;
	case Key.LEFT :
		banana_mc._x -= keyMove;
		break;
	}
};
Key.addListener(myKey);

「何のためにキー入力を調べるのか」によって、それぞれ適した方法が用意されています。