【发布时间】:2013-01-17 15:31:05
【问题描述】:
我的“游戏结束”屏幕有问题。我正在使用课程并且对他们来说相当新。 这是我得到的错误:
TypeError:错误 #1009:无法访问 null 的属性或方法 对象引用。在 DocumentClass/onAvatarDeath() 处 flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() 在 Flash.events::EventDispatcher/dispatchEvent() 在 MethodInfo-31()
这是DocumentClass 中的onAvatarDeath() 方法:
public function onAvatarDeath( avatarEvent:AvatarEvent ):void
{
var travelScore:Number = playScreen.getTravelScore();
var coinScore:Number = playScreen.getCoinScore();
gameOverScreen = new GameOverScreen();
gameOverScreen.addEventListener( NavigationEvent.RESTART, onRequestRestart );
gameOverScreen.x = 275;
gameOverScreen.y = 125;
gameOverScreen.setTravelScore( travelScore );
gameOverScreen.setCoinScore( coinScore );
addChild( gameOverScreen );
playScreen = null;
}
我的菜单屏幕的工作原理几乎相同,而且工作正常。当我追踪playScreen 时,它是null,这很好。但是当我追踪〜游戏结束〜屏幕时,它不会追踪......有什么帮助吗?我迷路了。
【问题讨论】:
-
如果
playScreen是null那就不行了,因为你试图在上面调用两个方法:getTravelScore()和getCoinScore()。因此,这会产生您遇到的错误。 -
你当然不能在空对象上调用函数!添加检查,例如: if (!playScreen) return;
-
我还不清楚该怎么做,你能给我举个例子吗?
-
如果
playScreen为空,那么这就是Flash 抱怨“空对象引用”的原因,因为playScreen.getTravelScore()正在尝试使用不存在的东西。您需要检查 playScreen 的设置位置以及设置为 null 的位置,并确保在onAvatarDeath()运行时它仍然可用。 (也许onAvatarDeath()不止一次运行,最后一行导致它?)
标签: actionscript-3 flash