繁体   English   中英

AS3键盘事件

[英]AS3 Keyboard events

如何为多个击键添加事件侦听器,例如,如果按下向上和向右按钮,播放器就会朝该方向倾斜。

看看下面的代码,我将按下的键存储在一个对象中,然后使用该对象对精灵进行动画处理:

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--;
            }
        }

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM