我收到错误 #1009 说我无法访问空对象引用的属性或方法。怎么办?
Posted
技术标签:
【中文标题】我收到错误 #1009 说我无法访问空对象引用的属性或方法。怎么办?【英文标题】:I got an Error #1009 saying I Cannot access a property or method of a null object reference. Now what? 【发布时间】:2014-10-10 06:41:51 【问题描述】:所以我在尝试运行我的游戏时遇到了这个错误。这是一个简单的小游戏,围绕着捡起轨道运行的塑料罐,同时试图避免轨道上的敌人。所以我按了 Ctrl+Shft+Enter ,发现问题出在我的 Ship Class 的第 26 行(if (this.y +...)。
package
import flash.display.Sprite;
import flash.events.Event;
public class Ship extends Sprite
public function Ship(_x:int,_y:int)
this.x = _x;
this.y = _y;
//adds event listener that allows the player to move
addEventListener(Event.ENTER_FRAME, player_move);
public function player_move(e:Event)
//check if at left or right side of stage
if (this.y - this.height / 2 <= 0)
this.y = 50;
if (this.y + this.height / 2 >= stage.height - this.height)
this.y = 370;
if (this.x - this.width / 2 <= 0)
this.x = 50;
if (this.x + this.width / 2 >= stage.width - this.width)
this.x = 500;
public function left():void
//the speed in which the player will move left
this.x -= 10;
public function right():void
//the speed in which the player will move right
this.x += 10;
public function up():void
//the speed in which the player will move right
this.y -= 10;
public function down():void
//the speed in which the player will move right
this.y += 10;
现在我该怎么办?我该如何解决?我在任何地方都找不到答案。我知道这与我的 Main 类有关,因为我已经说过,如果玩家是他的敌人,他的船会被放回他原来的坐标。
任何帮助将不胜感激。谢谢。
【问题讨论】:
加到舞台了吗?stage
可能是无效引用。
抱歉我的无知,我是新手。但是你的意思是它被添加到舞台上是什么意思?我究竟需要做什么才能将其添加到舞台或使stage
成为有效参考?
player_mve 方法的第一行应该是:if(!stage)return;
【参考方案1】:
您的 null 对象是 stage
引用。每个 DisplayObject 都有一个对舞台的引用,但是,在对象实际在舞台上之前,这是 null。
舞台是应用程序的主要容器。您的应用程序中的所有可视化内容都将以某种方式呈现在舞台上。您的主要文档类将在舞台上,所有时间线对象等。
即使您的对象被添加到不同的容器中,只要该容器以某种方式出现在舞台上,它也会被视为在舞台上。因此,用最基本的术语来说,如果对象位于用户应该能够看到的某个地方,则 stage 不会为空。
要解决此问题,您必须在将对象添加到舞台后添加 ENTER_FRAME
事件侦听器。幸运的是,您可以监听发生这种情况时触发的事件。
在构造函数中:
addEventListener(Event.ADDED_TO_STAGE, init);
然后添加你的处理程序:
private function init(evt:Event)
addEventListener(Event.ENTER_FRAME, player_move);
请记住,stage
将是空的,直到一个对象被添加到舞台,这是我们现在正在监听的事件。然后,只需将您的船添加到主游戏或它要进入的任何容器中,container.addChild(ship)
,如果该容器是舞台的一部分,那么您应该很高兴。
【讨论】:
以上是关于我收到错误 #1009 说我无法访问空对象引用的属性或方法。怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
Actionscript 3 错误 1009:无法访问空对象引用的属性或方法
TypeError:错误 #1009:无法访问空对象引用的属性或方法。尝试创建按钮时。
错误 #1009:无法访问空对象引用的属性或方法。 [好郁闷]
错误 #1009:无法访问空对象引用 AS3 项目的属性或方法