当左右移动AS3时跳跃的字符

时间:2017-07-17 16:05:38

标签: actionscript-3 flash animation game-physics

我正在制作一个平台游戏,其中主角移动并跳跃。

我希望角色分别左右跳跃。也许同时使用两把钥匙并落在地板上。我的角色电影剪辑符号为Naruto,我的楼层电影剪辑符号为floor

我的项目文件可以在这里找到:Naruto Game

为了做到这一点,我有一个主电影剪辑,其中包含所有其他电影剪辑,例如“向右跳”“向左跳”。 / p>

我遇到的问题是,当用户正在移动时,我希望角色在跳跃时面对正确(和左侧相同)。

My stage

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

 naruto.gotoAndStop("stance");
 var rightPressed: Boolean = new Boolean(false);
 var leftPressed: Boolean = new Boolean(false);
 var upPressed: Boolean = new Boolean(false);
 var downPressed: Boolean = new Boolean(false);
 var narutoSpeed: Number = 10;
 stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
 stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
 stage.addEventListener(Event.ENTER_FRAME, gameLoop);


 function keyDownHandler(keyEvent: KeyboardEvent): void {
    if (keyEvent.keyCode == Keyboard.RIGHT) {
        rightPressed = true;
    } else if (keyEvent.keyCode == Keyboard.LEFT) {
        leftPressed = true;
    } else if (keyEvent.keyCode == Keyboard.UP) {
        upPressed = true;
    } else if (keyEvent.keyCode == Keyboard.DOWN) {
        downPressed = true;
    }

 }

 function keyUpHandler(keyEvent: KeyboardEvent): void {
    if (keyEvent.keyCode == Keyboard.RIGHT) {
        rightPressed = false;
        naruto.gotoAndStop("standright")
    } else if (keyEvent.keyCode == Keyboard.LEFT) {
        leftPressed = false;
        naruto.gotoAndStop("standleft")
    } else if (keyEvent.keyCode == Keyboard.UP) {
        upPressed = false;
        naruto.gotoAndStop("stance")
    } else if (keyEvent.keyCode == Keyboard.DOWN) {
        downPressed = false;
        naruto.gotoAndStop("stance")
    }

 }

 function gameLoop(loopEvent: Event): void {
    if (rightPressed) {
        naruto.x += narutoSpeed;
        naruto.gotoAndStop("right");


    } else if (leftPressed) {
        naruto.x -= narutoSpeed;
        naruto.gotoAndStop("left");

    } else if (upPressed) {

        naruto.gotoAndStop("jumpright");

    }

 }

我非常感谢能解决这个问题的人,我一直试图解决这个问题!非常感谢你!

1 个答案:

答案 0 :(得分:2)

要解决此问题,您需要将function test0() {} function test1(arg0) {} function test2(arg0, arg1) {} console.log( test0.length ); // 0 console.log( test1.length ); // 1 console.log( test2.length ); // 2 语句更改为其他done语句(因此,您可以选择同时执行这两项操作 - 跳转和右键)。

这是一个代码示例:

else

使用此代码,如果按下右键,if将向右移动。如果同时按下向上,则除了向右移动外,它还会从状态切换到跳转状态。