1

我的键盘命令有问题,我试图让我的玩家在左/右行走时播放动画。键盘给出玩家移动和播放动画的命令。问题是他不停地开始动画,并且不让它完成。

stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP,keyRelease);

function keyRelease(k:KeyboardEvent)
{
    movement = 0;
    gotoAndPlay("standing");
}

function keyPressed(k:KeyboardEvent)
{
    if(k.keyCode==Keyboard.D)
    {
    movement = 5;
    gotoAndPlay("walking");
    }
    if(k.keyCode==Keyboard.A)
    {
    movement = -5;  
    gotoAndPlay("walking");     
    }
}

我想我可以浏览所有代码并制作某种长长的 IF 列表......

但我想一定有更好的方法

4

1 回答 1

0

当您向键盘添加事件时,一旦按下一个键,KeyboardEvent.KEY_DOWN如果它没有释放,就会不断调度。可能发生的是gotoAndPlay("walking")不断被调用,因此总是重新启动动画。

您需要一种方法来检查动画的状态并避免重新启动已播放的序列。就像是:

function keyRelease(k:KeyboardEvent)
{
    movement = 0;
    gotoAndPlay("standing");
}

function keyPressed(k:KeyboardEvent)
{
    if(k.keyCode==Keyboard.D && movement != 5)
    {
        movement = 5;
        gotoAndPlay("walking");
    }
    if(k.keyCode==Keyboard.A && movement != -5)
    {
        movement = -5;  
        gotoAndPlay("walking");     
    }
}

这不完全是我推荐的方式(根据当前的移动速度找出动画状态),但它是一个简单的解决方案,应该适用于这个问题。

于 2013-10-07T15:25:13.030 回答