如果它可见,如何删除它

时间:2013-10-31 08:23:03

标签: actionscript-3

当你可以保存并恢复游戏时,我正在AS3中制作游戏。

玩家可以在游戏过程中在内窥镜上加载他保存的游戏。

我有一个错误(不是很重要,因为游戏仍然有效,但我想纠正以便干净),因为我不知道如何把它放在代码中。

因此,当玩家在Introscreen点击“加载”时,会打开一个窗口,在那里他可以选择要恢复的游戏。

当他选择游戏时,他点击它并且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);
    }

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

visible用于显示/隐藏显示对象。您无法使用它来确定对象是否已添加到显示列表中。有很多选择可以实现这一目标。

选项1:检查parent的{​​{1}}属性。

introScreen

选项2:使用if (introScreen.parent) { introScreen.parent.removeChild(introScreen); } 方法。

contains

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

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

答案 1 :(得分:0)

尝试 introScreen.parent.removeChild(introScreen)