单击按钮时删除子项

时间:2013-08-29 11:16:32

标签: actionscript-3

我有一点问题。我在游戏开始前创建了一个菜单,其中包含“开始”,“加载”和“退出”按钮。它位于一个名为IntroScreen.as的新类中。

因此,引擎类(Engine.as)在电影之后调用Introscreen:

private function ouvertureMenu(e:MouseEvent):void{
removeChild(opening);
introScreen.visible = true;
options.changeMusic(“”);

从这里完美。

当我点击“加载”按钮时,它会调用另一个名为SaveRestore.as的类,其中包含保存和恢复的所有功能。 因此,窗口保存/恢复打开。

但是当我恢复游戏时,saverestore窗口关闭但不是Introscreen! (我听说(音乐背景)我的游戏是在后台加载的。)

所以当我点击“恢复”时,我想让我的IntroScreen不可见。

我不明白为什么它不起作用。我在SaveRestore.as中添加了一个“removeChild(introScreen)”:

…
// Restore game data
if(allSaveData){
puzzle.restorePuzzles(allSaveData.puzzleStatus);
inv.restoreInv(allSaveData.currentInv, allSaveData.allInv);
options.restoreOptions(allSaveData.optset);

Engine.newBack = allSaveData.playerLoc.room;
addEventListener(“repose”, reposePlayer);
stageRef.dispatchEvent(new Event(“changeBackground”));
showConfirm(“restored”, slotNum);
removeChild(introScreen);
dispatchEvent(new Event(“closeThis”));
} else {
trace (“No save data found”);
Engine.restoring = false;
}

你知道可能是什么问题吗?为什么introscreen仍然可见(removeChild不工作) (我正在使用ALPACA open source code

1 个答案:

答案 0 :(得分:0)

看起来introScreen的所有者是Engine,这是您需要从中调用removeChild的地方。也许像这样解决它?

  //in Engine.as:
  public function removeIntro():void
  { //logic here, including removeChild(...)
  }

  //in SaveRestore.as
  engineRef.removeIntro();