簡體   English   中英

在AS3 Flash中攻擊動畫問題

[英]Attack animation issue in as3 flash

我的問題是,當我按下空格鍵時,它會播放攻擊動畫,但是一旦釋放它,它就會停止動畫處理。 我想要在這里我可以簡單地按下並釋放按鈕,然后由它自己完成動畫。

function keyPressed(e:KeyboardEvent):void
    {
        if(e.keyCode == Keyboard.RIGHT)
          {
             rDown = true;  
          }
        if(e.keyCode == Keyboard.LEFT)
          {
             lDown = true;
          }
        if(e.keyCode == Keyboard.UP && onGround)
          {
             jumped = true;
          }
        if(e.keyCode == Keyboard.DOWN && onGround)
          {
             crouchMode = true; 
          }
        if(e.keyCode == Keyboard.SPACE && onGround)
          {
              attackMode = true;

          }
    }
    function keyReleased(e:KeyboardEvent):void
    {
        if(e.keyCode == Keyboard.RIGHT)
          {
             rDown = false; 
          }
        if(e.keyCode == Keyboard.LEFT)
          {
             lDown = false;  
          }
        if(e.keyCode == Keyboard.UP)
          {
             jumped = true;  
          }
        if(e.keyCode == Keyboard.DOWN)
          {
             crouchMode = false; 
          }
        if(e.keyCode == Keyboard.SPACE)
          {
             attackMode = false; 
          }
    }
    function gameLoop(e:Event):void
    {   
        playerStart();

              }  
        }
    }
    function playerStart():void
    {
        warMage.y += grav;//Apply gravity to player

        collisionStageCheck();

        if(crouchMode)
        {
            warMage.gotoAndStop("CrouchWarmage");
            rDown = false;
            lDown = false;
        }
        if(attackMode)
        {

            if(warMage.scaleX == 1)//If we face right
            {
              warMage.x += 5;//Lunge right
            }
            if(warMage.scaleX == -1)//If we face left
            {
              warMage.x -= 5;//Lunge left   
            }
            warMage.gotoAndPlay("AttackWarmage");
        }
        if(rDown)//If we move right
        {
           warMage.x += 12;
           warMage.gotoAndStop("RunWarmage");
           warMage.scaleX = 1;
        }
        if(lDown)//If we move left
        {
           warMage.x -= 12;
           warMage.gotoAndStop("RunWarmage");
           warMage.scaleX = -1;
        }
        if(jumped)//If we jumped
        {
           warMage.y -= 30;
           warMage.gotoAndStop("JumpWarmage");
        }
        if(!rDown && !lDown && !jumped && !crouchMode && !attackMode)//If we are in neither states
        {
            warMage.gotoAndStop("idleWarmage");
        }
    }

攻擊動畫未完成,因為在空格鍵keyReleased函數attackMode設置為false 不要那樣做 而是在動畫的最后一幀attackMode false。 在嵌套在if (attackMode) {邏輯塊內的Main類中執行此操作

if (heroMage.currentFrame == "LastFrame") 
{
    attackMode = false;
}

顯然,您將攻擊動畫的最后一幀命名為“ LastFrame”。

在這里還發現了一種更優雅的方法,即使用eventDispatcher ,它無需檢查當前幀,但在影片剪輯時間軸中包含代碼(在我看來)則有點令人討厭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM