AS3-为什么会出现此1009错误?(无法访问空对象的属性或方法)

埃里克·W。

我无法使该程序正常工作。我总是会收到此错误:Error #1009: Cannot access a property or method of a null object reference我不明白为什么,将不胜感激。

这是我的代码:

主班:

package 
{

    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {
        private var enginge:Engine = new Engine(stage);
        private var enemy:Enemy = new Enemy(100, 100);

        public function Main():void 
        {
            addChild(enemy);
        }
    }
}

引擎类别:

package  
{
    import flash.display.Sprite;
    import flash.display.Stage;

    public class Engine 
    {
        public static var stage:Stage;
        public static var gravity:int = 1;

        public function Engine(stage:Stage) 
        {
            Engine.stage = stage;
        }

        public static function gravitate(object:Sprite):void
        {
            object.y += Engine.gravity;

            if (object.y < Engine.stage.stageHeight - object.height / 2)
            {
                Engine.gravity += 1;
            }
            else
            {
                Engine.gravity = 0;
                object.y = Engine.stage.stageHeight - object.height / 2;
            }
        }
    }
}

敌人等级:

package  
{
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.events.Event;

    public class Enemy extends Sprite
    {
        private var gravity:int = 1;

        public function Enemy(x:int, y:int) 
        {
            this.graphics.beginFill(1, 1);
            this.graphics.drawRect(this.x - 25, this.y - 40, 50, 80);
            this.graphics.endFill();

            this.x = x;
            this.y = y;

            this.addEventListener(Event.ENTER_FRAME, function(e:Event):void
            {
                Engine.gravitate(this);
            });
        }
    }
}
康拉德·萨瓦温斯基

为了解决该问题,您需要摆脱Enemy类中的匿名函数。

你将会有:

  public function Enemy(x:int, y:int)
  {
        this.graphics.beginFill(1, 1);
        this.graphics.drawRect(this.x - 25, this.y - 40, 50, 80);
        this.graphics.endFill();
        this.x = x;
        this.y = y;
        this.addEventListener(Event.ENTER_FRAME,handler);
  }

  private function handler(event:Event):void
  {
        Engine.gravitate(Sprite(this));
  }

并且代码将正常工作。这是由于匿名函数中单词this的上下文不同

匿名函数的使用是一种可怕的做法,您应避免这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AS3错误1009:无法访问空对象引用的属性或方法

来自分类Dev

AS3 / Flash-错误#1009:无法访问空对象引用的属性或方法

来自分类Dev

AS3:TypeError:错误#1009:无法访问空对象引用的属性或方法

来自分类Dev

AS3-错误#1009:无法访问空对象引用的属性或方法

来自分类Dev

As3 Flash错误“无法访问空对象引用的属性或方法”

来自分类Dev

调试时出现AS3错误1009

来自分类Dev

AS3-错误#1009:无法在supportForce / general()上访问空对象引用的属性或方法

来自分类Dev

AS3 | 错误1009无法修复

来自分类Dev

AS3错误1195:

来自分类Dev

AS3 | getChildByName错误

来自分类Dev

AS3 GoToAndPlay错误

来自分类Dev

错误增量AS3

来自分类Dev

在AS3中定位对象

来自分类Dev

多对象碰撞as3

来自分类Dev

AS3对象移动

来自分类Dev

什么是AS3中的SecureSocket?

来自分类Dev

AS3 lineTo方法替代

来自分类Dev

AS3错误#1009位置开始为空

来自分类Dev

如何正确遍历此对象,AS3

来自分类Dev

使用AS3访问主机属性

来自分类Dev

AS3不会删除EventListener#1009

来自分类Dev

As3错误找不到错误

来自分类Dev

AS3访问类和变量

来自分类Dev

AS3:如何访问孩子的孩子的孩子?

来自分类Dev

AS3:访问函数外的变量

来自分类Dev

Flash Player(AS3)和HTML属性

来自分类Dev

未定义的属性AS3

来自分类Dev

未定义的属性AS3

来自分类Dev

AS3 类公共属性