キーで制御
ボタンをマウスで押す変わりにキー操作でおこなう
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つの方法があります。
- 毎フレームが実行されるイベントの中でキーが押されているか判定する
- キーが押されるごとにイベントが呼ばれるように登録する
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);
「何のためにキー入力を調べるのか」によって、それぞれ適した方法が用意されています。