【问题标题】:Flash actionscript - gotoAndPlay() error 1009 cannot access a property or method of a null objectFlash actionscript - gotoAndPlay() 错误 1009 无法访问空对象的属性或方法
【发布时间】:2013-04-17 14:58:57
【问题描述】:

我是新手,需要一些帮助。

我正在用 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);
}
}

提前感谢您的帮助!

【问题讨论】:

  • 您需要确定错误发生在哪一行。您使用的是哪个 IDE? 1009 表示您试图访问某个为 null 的属性 - 例如当 ball 为 null 时的“ball.y”。
  • 我目前使用 Flash Professional 作为我的 IDE,方法是将代码直接写入它所属的每一帧。
  • 尝试在调试模式下运行 - 它应该停止在发生错误的行
  • 调试模式绝对有帮助!我意识到我移动的一些背景符号在切换帧之前没有被删除。这一定是导致错误的原因。非常感谢!抱歉新手问题
  • 没问题 - 我们都必须从某个地方开始 ;)

标签: flash actionscript


【解决方案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)){
removeEventListener(Event.ENTER_FRAME, gameOver);
            this.removeChild(ball);
            trace("Chicken removed");
            }
gotoAndPlay(1);
}
}

添加了 removeEventListener。

【讨论】:

    【解决方案2】:

    这可能是因为内联函数在它自己的(全局)范围内运行。它仍然可以访问函数中定义的变量,所以通常这样解决。

      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-05-16
      • 2018-09-15
      • 1970-01-01
      • 2014-03-25
      • 2015-05-27
      • 1970-01-01
      • 2012-12-29
      • 2014-08-05
      相关资源
      最近更新 更多