1

我已经尝试了几个小时,但我无法让我的小角色随着键盘移动。

我已经进行了跟踪以查看是否发生了任何事情并且位置值确实发生了变化,但我的角色对位置变化没有反应。

我没有收到任何错误。我的 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;
        }
    }

}

}

4

1 回答 1

0

您可能需要考虑编写一个静态Input类。

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_DOWNKEY_UP事件的侦听器。他们可以轻松查询键并相应地执行相关操作。

Input.setup(stage);

/...

if(Input.isKeyDown(Input.A)) {
    char1.x -= 5;
}
于 2014-10-23T17:24:03.653 回答