AS3 - 跳过不动

时间:2014-03-23 08:30:09

标签: actionscript-3 flash

我正在AS3制作一个蛙人游戏,当你向上,向下,向左和向右按压时,你会“跳过”一定数量的空间,而不是像大多数平台游戏那样逐渐移动到那里。我怎么能这样做?

目前,他在各自的钥匙上向左,向下和向右移动。但是他逐渐移动到那里,而不是像真正的蛙人那样跳过太多的空间。

关于如何做到这一点的任何想法?

代码:

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
function keyDownHandler(event:KeyboardEvent):void{
    if (event.keyCode == Keyboard.UP){
        trace("frogger up");
        player.y -= 5;
    }
    if(event.keyCode == Keyboard.DOWN){
        trace("frogger down");
        player.y += 5;
    }
    if(event.keyCode == Keyboard.LEFT){
        trace("frogger left");
        player.x -= 5;
    }
    if(event.keyCode == Keyboard.RIGHT){
            trace("frogger right");
        player.x += 5;
        }
}

1 个答案:

答案 0 :(得分:0)

一种方法是增加X和Y一定量,就像Marty在评论中说的那样,50 ..或者你可以创建两个变量,让我们将它们命名为xPosition& yPosition
按住键时,您只需将这些变量增加/减少1,然后调用定位函数,该函数将根据xPositionyPosition的值计算玩家的新位置,当然是网格尺寸。

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
var xPosition:int = 0;
var yPosition:int = 0;
var gridWidth:int = 32;
var gridHeight:int = 32;
function keyDownHandler(event:KeyboardEvent):void{
    if (event.keyCode == Keyboard.UP){
        yPosition--;
        repositionPlayer();
    }
    if(event.keyCode == Keyboard.DOWN){
        yPosition++;
        repositionPlayer();
    }
    if(event.keyCode == Keyboard.LEFT){
        xPosition--;
        repositionPlayer();
    }
    if(event.keyCode == Keyboard.RIGHT){
        xPosition++;
        repositionPlayer();
    }
}
function repositionPlayer():void{
    player.x = gridWidth*xPosition;
    player.y = gridHeight*yPosition;
}

如果您想要更改网格大小,这将为您提供一个很大的优势。