複数のキーストロークに対してイベント リスナーを追加するにはどうすればよいでしょうか。たとえば、上ボタンと右ボタンを押すと、プレイヤーはその方向に斜めに移動します。
質問する
3933 次
1 に答える
3
次のコードを確認してください。押されたキーをオブジェクトに保存し、オブジェクトを使用してスプライトをアニメーション化します。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Main extends Sprite
{
private var _keys:Object = { };
private var _sprite:Sprite = new Sprite;
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
_sprite.graphics.beginFill(0xff0000, 1);
_sprite.graphics.drawRect(0, 0, 40, 40);
_sprite.graphics.endFill();
_sprite.x = 100;
_sprite.y = 100;
addChild(_sprite);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onKeyDown(e:KeyboardEvent):void
{
_keys[e.keyCode] = true;
}
private function onKeyUp(e:KeyboardEvent):void
{
_keys[e.keyCode] = false;
}
private function onEnterFrame(e:Event):void
{
if (_keys[Keyboard.UP])
{
_sprite.y --;
}
if (_keys[Keyboard.DOWN])
{
_sprite.y ++;
}
if (_keys[Keyboard.RIGHT])
{
_sprite.x++;
}
if (_keys[Keyboard.LEFT])
{
_sprite.x--;
}
}
}
}
于 2013-04-14T03:19:47.470 に答える