如何让我的键盘命令让玩家通过动画播放?

时间:2013-10-07 14:44:24

标签: actionscript-3 flash animation keyboard-events

我的键盘命令有问题,我试图让我的播放器播放动画 当他左/右走时。 键盘为玩家提供移动和播放动画的命令。 问题是他不停地开始动画,并没有让它完成。

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列表......

但我想必须有一个更好的方法

1 个答案:

答案 0 :(得分: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");     
    }
}

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