2013-08-03 59 views
0

我試圖創建一個擊敗他媽的遊戲,現在我得到了我的角色攻擊。到目前爲止我有3個攻擊動畫,並且工作正常。如果你不斷地搗碎攻擊按鈕,它會攻擊,但是一旦攻擊按鈕關閉,問題就會轉移到下一個攻擊動畫,我不想那樣做。一旦當前的攻擊動畫完成後,我怎樣才能讓它進入下一個攻擊動畫,而不是跳到當前動畫中途的下一幀。所以我希望角色完成自己的攻擊,如果玩家仍然鍵入攻擊密鑰,它會進入下一個攻擊框架。AS3攻擊動畫問題

package 
{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.KeyboardEvent; 
    import flash.ui.Keyboard; 

    public class Player extends MovieClip 
    { 
     //Attack variables 
     var Attacking:Boolean = false; 
     var Punches:int = 0; 
     var Punching:Boolean = false; 
     var Kicks:int = 0; 
     var Kicking:Boolean = false; 

     public function Player() 
     { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyPressed); 
      addEventListener(Event.ENTER_FRAME,Update); 
     } 

     function KeyPressed(event:KeyboardEvent):void 
     { 
      stage.removeEventListener(KeyboardEvent.KEY_DOWN, KeyPressed); 
      stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); 

       //If A key is down 
       if (event.keyCode == 65) 
       { 
        Attacking = true; 
        Punching = true; 
        Punches++; 
       } 
     } 

     function Update(event:Event) 
     { 
      //If player is not attacking 
      if (Attacking == false) 
      { 
       Punching = false; 
       Punches = 0; 
       Kicking = false; 
       Kicks = 0; 
      } 
      else if (Attacking == true) 
      { 

       if (Punching == true) 
       { 
        gotoAndStop('Jab' + Punches); 
       } 
      } 

     } 


     function KeyUp(event:KeyboardEvent) 
     { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyPressed); 

     } 
    } 
} 

而且每一次攻擊動畫的最後一幀中我已經放下

import flash.display.MovieClip; 
import flash.events.Event; 

stop(); 
MovieClip(parent).Attacking = false; 
MovieClip(parent).Punches = 0; 

回答

0

首先,你應該刪除事件偵聽器添加和來自KeyPressedKeyUp方法去除(他們不需要他們只會引起問題),並將注意事項註冊到構造器中,就像其他兩個一樣。

其次,要做到這一點,您需要檢查鍵是否關閉,而不是聽按鍵。爲此,您需要一個新的字段,例如holdingAttackKey

 var holdingAttackKey:Boolean = false; 



     function KeyPressed(event:KeyboardEvent):void { 
      if (event.keyCode == 65) 
      { 
       holdingAttackKey = true; 

       Attacking = true; 
       Punching = true; 
       //... 



    function KeyUp(event:KeyboardEvent) 
    { 
     holdingAttackKey = false; 
    } 



    function Update(event:Event) 
    { 
     if(holdingAttackKey && Attacking==false) { 
       Attacking = true; 
       Punching = true; 
       Punches++; 
     } 
     //.... 
+0

謝謝,我會試一試,但我需要這些聽衆爲不同的原因/功能的作品。我放置的代碼只是我整個冗長代碼中的相關代碼,但我會試試這個代碼並且會讓你知道 – user2350724