2010-01-16 96 views
0

我希望我解釋得很好。但在我的遊戲中,我有3個關鍵幀用於我的子彈Movieclip。 1顯示其正常狀態。 2顯示它吹起來,3從舞臺上移除它。共3幀。當子彈擊中一個物體時,我去玩第二幀。那麼當第3幀點擊時,我將它刪除。這裏是我的代碼只玩一個關鍵幀

private function blowUp():void 
     { 
      if(dead) 
      { 
       gotoAndPlay(2); 
       if(currentFrame == 3) 
       { 
        garbage = true; 
       } 
      } 
     } 

我的問題是它到第2幀,但從來沒有達到第三幀。所以第3幀不能垃圾收集子彈。如果我使用Play()來代替,那麼它可以工作,但gotoAndPlay不是

我甚至試圖從第3幀(它仍然是一個幀)中刪除關鍵幀。 (希望能夠通過)但它沒有。我知道我的問題是愚蠢的,所以如果任何人都可以提供幫助,那會很好。謝謝

回答

2

你確定你不打電話blowUp每幀,所以你重置爲第2幀?

如果是這樣的話,也許,嘗試將布爾後衛:

private var doingBlowUp : Boolean = false; 

    private function blowUp() : void 
    { 
     if (dead) { 
      if (doingBlowUp) 
      { 
       if (currentFrame == 3) 
       { 
        garbage = true; 
        doingBlowUp = false; 
       } 

      } else { 
       doingBlowUp = true; 
       gotoAndPlay(2); 
      } 
     } 

    } 
0

你將不得不增加一個輸入框事件處理程序。嘗試跟蹤currentFrame,你正在做的邏輯,看看它是否是== 3.我的猜測是,它將是一個值爲2。另一種選擇是從第3幀調用一個函數來進行適當的清理。

0

請注意Flash Player 9中的錯誤,其中gotoAndPlay(x)將播放幀「x」兩次。