游戏结束屏幕问题

时间:2013-01-17 15:31:05

标签: actionscript-3 flash

我的“游戏结束”屏幕出现问题。我正在使用类和相当新的类。 这是我得到的错误:

  

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时,这很好。但是,当我在〜屏幕上追踪〜游戏时,它没有追踪...任何帮助?我输了。

1 个答案:

答案 0 :(得分:0)

查看了您的文件后,即使玩家死亡,您的游戏也会继续运行(具体而言,avatarEnterFrame一直被调用)。这意味着onAvatarDeath会反复运行,但由于您第一次将playScreen设置为空,因此当Flash尝试执行getTravelScore或{{1}时,Flash无法找到它}。

我通常有一个像getCoinScore这样的变量,我会在游戏开始或玩家死亡(或获胜)时不断更新,然后将var isGameRunning:Boolean = false;放在if (gameRunning)等所有功能上

或者,您可以在玩家死亡时删除avatarEnterFrame上的ENTER_FRAME侦听器(但显然记得在玩家重新开始游戏时再次添加)。