代码之家  ›  专栏  ›  技术社区  ›  Ivan Solodov

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

  •  1
  • Ivan Solodov  · 技术社区  · 12 年前

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

    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");     
        }
    }
    

    我想我可以浏览所有的代码,并列出一些长长的IFs列表。。。

    但我认为肯定有更好的方法

    1 回复  |  直到 12 年前
        1
  •  0
  •   zeh    12 年前

    当您将事件添加到键盘时,一旦按下某个键, 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");     
        }
    }
    

    这不是 确切地 我推荐的方式(根据当前移动速度计算动画状态),但这是一个简单的解决方案,应该可以解决这个问题。