0

当您可以保存和恢复游戏时,我正在用 AS3 制作游戏。

玩家可以在介绍屏幕或游戏期间加载他保存的游戏。

我有一个错误(不是很重要,因为游戏仍在运行,但我想更正以保持干净),因为我不知道如何将其放入代码中。

因此,当玩家在介绍屏幕上单击“加载”时,会打开一个窗口,他可以在其中选择要恢复的游戏。

当他选择一个游戏时,他点击它,IntroScreen 和恢复窗口消失。这是此代码:

if(allSaveData){
..
dispatchEvent(new Event("closeThis"));
this.parent.removeChild(introScreen);
}

但是当他在比赛中并且他想要恢复时。他点击“esc”并出现恢复窗口。但是 IntroScreen 不在这里。因此,当他恢复游戏时,“this.parent.removeChild(introScreen);”出现错误 因为 IntroScreen 不在这里。

我试过这个:

if(allSaveData){
    ..
    dispatchEvent(new Event("closeThis"));
                } 
                if (introScreen.visible == true){
                this.parent.removeChild(introScreen);
    }

但它不起作用。你知道我怎么能告诉代码“如果introscreen在这里关闭它,如果不是”?

谢谢您的帮助 !

4

2 回答 2

2

visible是显示/隐藏显示对象。您不能使用它来确定对象是否添加到显示列表中。有许多选项可以实现这一目标。

选项 1:检查 的parent属性introScreen

if (introScreen.parent) {
    introScreen.parent.removeChild(introScreen);
}

选项2:使用contains方法。

if (this.parent.contains(introScreen)) {
    this.parent.removeChild(introScreen);
}

选项 3:使用 try-catch 块并简单地忽略错误。

try {
    this.parent.removeChild(introScreen);
} catch(err:Error) {
    // ignore the error when it's not present
}
于 2013-10-31T09:20:32.433 回答
0

尝试 introScreen.parent.removeChild(introScreen)

于 2013-10-31T08:42:24.377 回答