簡體   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