2013-04-17 26 views
0

我是新手,需要一些幫助。Flash動作腳本 - gotoAndPlay()錯誤1009無法訪問空對象的屬性或方法

我做在Flash遊戲,我不斷收到一個錯誤1009

我有我的GAMEOVER條件上市,而每次發生GAMEOVER和的gotoAndPlay(1)代碼的調用,我得到的錯誤。如果我將gotoAndPlay(1)行註釋掉,錯誤消失。

下面是代碼:

this.addEventListener(Event.ENTER_FRAME, gameOver); 
    function gameOver(e:Event):void{ 
     //gameover conditions 
     if (ball.y > 799 - ball.width/2 && score > 0) 
     { 
      trace("GameOver!"); 
      if (this.contains(ball)){ 
      this.removeChild(ball); 
      trace("Chicken removed"); 
      } 
gotoAndPlay(1); 
} 
} 

預先感謝您的幫助!

+0

您需要確定發生錯誤的線路。你正在使用哪個IDE? 1009意味着你試圖訪問一個null值的屬性 - 比如ball爲空時的「ball.y」。 – 2013-04-17 15:20:13

+0

我目前正在使用Flash Professional作爲我的IDE,將代碼直接寫入到它所屬的每個框架上。 – BretzelPretzel

+0

嘗試在調試模式下運行 - 它應該停在發生錯誤的行上 – 2013-04-17 16:55:47

回答

0

改變了你的代碼:

this.addEventListener(Event.ENTER_FRAME, gameOver); 
    function gameOver(e:Event):void{ 
     //gameover conditions 
     if (ball.y > 799 - ball.width/2 && score > 0) 
     { 
      trace("GameOver!"); 
      if (this.contains(ball)){ 
removeEventListener(Event.ENTER_FRAME, gameOver); 
      this.removeChild(ball); 
      trace("Chicken removed"); 
      } 
gotoAndPlay(1); 
} 
} 

新增removeEventListener。

0

這可能是由於內聯函數運行在它自己的(全局)範圍內導致的。它仍然可以訪問函數中定義的變量,所以通常這樣解決。

this.addEventListener(Event.ENTER_FRAME, gameOver); 
    var obj:DisplayObject = this; 

    function gameOver(e:Event):void { 
     //gameover conditions 
     if (ball.y > 799 - ball.width/2 && score > 0) { 
      trace("GameOver!"); 
      if (this.contains(ball)) { 
       this.removeChild(ball); 
       trace("Chicken removed"); 
      } 
      obj.gotoAndPlay(1); 
     } 
    } 
相關問題