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);
    }

しかし、それは機能していません。「イントロスクリーンがここにある場合は閉じ、そうでない場合は閉じない」というコードをどのように伝えることができるか知っていますか?

ご協力ありがとうございました !

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 に答える