我的“游戏结束”屏幕出现问题。我正在使用类和相当新的类。 这是我得到的错误:
TypeError:错误#1009:无法访问null的属性或方法 对象参考。在DocumentClass / onAvatarDeath()at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() 在MethodInfo-31()的flash.events::EventDispatcher/dispatchEvent()
这是onAvatarDeath()
中的DocumentClass
方法:
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
时,这很好。但是,当我在〜屏幕上追踪〜游戏时,它没有追踪...任何帮助?我输了。
答案 0 :(得分:0)
查看了您的文件后,即使玩家死亡,您的游戏也会继续运行(具体而言,avatarEnterFrame
一直被调用)。这意味着onAvatarDeath
会反复运行,但由于您第一次将playScreen
设置为空,因此当Flash尝试执行getTravelScore
或{{1}时,Flash无法找到它}。
我通常有一个像getCoinScore
这样的变量,我会在游戏开始或玩家死亡(或获胜)时不断更新,然后将var isGameRunning:Boolean = false;
放在if (gameRunning)
等所有功能上
或者,您可以在玩家死亡时删除avatarEnterFrame
上的ENTER_FRAME
侦听器(但显然记得在玩家重新开始游戏时再次添加)。