【问题标题】:Remove a child when clicking on a button单击按钮时删除子项
【发布时间】:2013-08-29 11:16:32
【问题描述】:

我有一个小问题。我在游戏开始前创建了一个菜单,带有“开始”、“加载”和“退出”按钮。它位于一个名为 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;
}

你知道可能是什么问题吗?为什么介绍屏幕仍然可见(removeChild 不起作用) (我使用的是ALPACA open source code

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

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

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

    【讨论】:

    • 和 Engine.removeIntro();正在犯错误 1061..(静态类)
    • 我的解决方案假设在应用程序中执行了某种封装。这可能不适用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多