如何让我的movieclip角色移动?

时间:2014-10-23 16:40:18

标签: actionscript-3 switch-statement flash-cc

我已经尝试了几个小时了,我不能让我的小角色用键盘移动。

我跑了一条痕迹,看看是否有任何事情发生,位置值确实发生了变化,但我的角色没有对这个位置变化做出反应。

我没有收到任何错误。我的Character和BrickBlock都是动画片段,并且已经为ActionScript导入了它们。

如果需要任何其他信息,请告诉我。谢谢! :)

我的以下代码:

package  {

import flash.events.Event
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;

public class CharMove extends MovieClip {

    var char1 :Character;
    var block :BrickBlock;

    public function CharMove() 
    {           
        char1 = new Character();
        block = new BrickBlock();

        //this.addEventListener(Event.ENTER_FRAME, collide)
        stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown);
    }

    /*function collide(e:Event):void
    {
            if(char.hitTestObject(block))
            {
                char.visible = !char.visible;
            }
    }*/

    function kDown(event:KeyboardEvent):void
    {
        switch (event.keyCode)
        {
            case Keyboard.LEFT:
                char1.x -= 5;
                trace(char1.x);
                break;

            case Keyboard.RIGHT:
                char1.x +=5;
                trace(char1.x);
                break;
        }
    }

}

}

1 个答案:

答案 0 :(得分:0)

您可能需要考虑编写静态输入类。

package input {
    import flash.display.Stage;
    import flash.events.KeyboardEvent;

    public class Input {

        private static var keys:Array = new Array(255);

        public static function setup(stage:Stage):void {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
        }

        private static function keyDown(e:KeyboardEvent):void {
            keys[e.keyCode] = true;
        }

        private static function keyUp(e:KeyboardEvent):void {
            keys[e.keyCode] = false;
        }

        public static function isKeyDown(k:int):Boolean {
            return keys[k];
        }

        public static const A:uint = 65;
        public static const B:uint = 66;
        public static const C:uint = 67;
        // The rest of the keys...
    }
}

要使用它,请先调用 setup(),它会为 KEY_DOWN KEY_UP 事件添加侦听器。 他们可以轻松查询密钥并相应地执行相关操作。

Input.setup(stage);

/...

if(Input.isKeyDown(Input.A)) {
    char1.x -= 5;
}