0

私は初心者で、助けが必要です。

Flash でゲームを作成していますが、エラー 1009 が発生し続けます。

ゲームオーバー条件を一覧にしていますが、ゲームオーバーが発生して 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);
}
}

よろしくお願いします。

4

2 に答える 2

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);
      }
  }
于 2013-04-17T19:55:10.390 に答える
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 を追加しました。

于 2013-04-20T12:48:05.060 に答える