0

我的“游戏结束”屏幕有问题。我正在使用课程并且对他们来说相当新。这是我得到的错误:

TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 DocumentClass/onAvatarDeath() 在 flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在 MethodInfo-31()

这是中的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,这很好。但是当我追踪〜游戏结束〜屏幕时,它不会追踪......有什么帮助吗?我迷路了。

4

1 回答 1

0

查看您的文件后,您的游戏即使在玩家死亡后仍会继续运行(特别是avatarEnterFrame不断被调用)。这意味着它onAvatarDeath会一遍又一遍地运行,但是因为您第一次设置为 null ,所以当 Flash 尝试执行orplayScreen时找不到它。getTravelScoregetCoinScore

我通常有一个变量var isGameRunning:Boolean = false;,当游戏开始或玩家死亡(或获胜)时,我会保持更新,然后放置if (gameRunning)整个任何函数,如avatarEnterFrame.

或者,您可以在玩家死亡时移除ENTER_FRAME监听avatar器(但显然记得在玩家重新开始游戏时再次添加它)。

于 2013-01-18T00:26:56.180 回答