Flash游戏 - 返回主菜单

时间:2012-11-22 04:10:56

标签: android ios actionscript-3 flash

我正在制作一个Flash游戏,并且已经完成了它,但我遇到了一个问题。当游戏结束,或者用户按下“结束游戏”按钮时,我想将它们返回主菜单。设置游戏以使主菜单位于第3帧,游戏在第4帧运行。所有的游戏代码都在那里。

我尝试过的一些事情: 我只是试着回到第3帧。这会导致错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Hundred_fla::MainTimeline/GotoEndGame()[Hundred_fla.MainTimeline::frame5:66]

我已经尝试将所有游戏变量恢复为默认值,删除所有孩子......等等...我也得到完全相同的错误...不确定问题是什么。我认为一个解决方案是重新加载电影,但这将在Android / IOS上运行,我无法刷新网页。 ... 任何帮助将不胜感激。谢谢

编辑:第66行的代码是:

while(stage.numChildren > 0){
    stage.removeChildAt(stage.numChildren-1);
}

2 个答案:

答案 0 :(得分:2)

在尝试清除对象之前,您应该锁定阶段链接。您似乎正在删除运行代码的实例,因此它将丢失阶段引用。

var theStage:Stage=stage;
while(theStage.numChildren > 0){
    theStage.removeChildAt(0); 
    //you can always be sure that element at [0] exists, rather than going for [numChildren-1]
}

答案 1 :(得分:1)

根据第5帧第66行的内容,可能会有以下几点:

  • 您的目标是Flash Player 9,其中显示对象与您的gotoAndStop调用异步加载,因此您最终会使用空引用。解决方案是针对Flash Player 10或11(在发布设置中更改它[Ctrl + Shift + F12])。如果您确实需要定位Flash Player 9,则有convoluted methods to ensure the attributes are accessible

  • gotoAndStop之后引用第5帧中的对象(不再可用),从而抛出空对象引用错误

  • 这是您逻辑中的错误,我们需要查看一些代码才能找到它

如果有疑问,最好将gotoAndStop电话作为方法中的最后一个。

编辑:

看到代码后,似乎stage本身为空,从而引发错误。如果没有明显区别,您可以使用try / catch包围代码:

try {
    while(stage.numChildren){
        stage.removeChildAt(0);
    }
} catch (error:Error) {
}

另请尝试收听ADDED_TO_STAGE事件,以确保在访问stage前有{{1}}的有效引用。