0

少し問題があります。ゲームを開始する前に、「開始」、「ロード」、「終了」ボタンを含むメニューを作成しました。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 オープン ソース コードを使用しています)

4

1 に答える 1

0

introScreen の所有者は Engine のようで、そこから removeChild を呼び出す必要があります。多分このようにそれを回避しますか?

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

  //in SaveRestore.as
  engineRef.removeIntro();
于 2013-08-29T11:31:23.550 に答える