2017-05-24 15 views
2

私は2つのフレームを持っています。フレームを再訪するときにAddChildをステージに1回だけ追加する

最初のフレームでは、ボタンをクリックして次のフレームに移動できます。最初のフレームでは、ただちにmenu1をステージに追加したいと思います。次のフレームに移動して最初のフレームに戻った場合は、すでにステージに入っているため、menu1を再度作成しないでください。

私の問題は、フレーム2からフレーム1に戻ったときに、menu1のコピーをステージに追加し続けることです。

stop(); 

import flash.display.Loader; 
import flash.events.MouseEvent; 
import flash.net.URLRequest; 
import flash.display.Stage; 

var menu1:Loader = new Loader(); 
var request1:URLRequest = new URLRequest ("MENU1.swf"); 
menu1.load(request1); 

if (stage.contains(menu1)){ 

} 
else 
{ 
    addChild(menu1); 
} 

答えて

3

それはまだあなたの場合は条件が常にfalseなるためで、メニューごとに時間を加え続ける理由:ここで

は私の現在のコードです。そのような場合は理由を指摘するには、2つのラインがあります

:上記の行で

var menu1:Loader = new Loader(); 

、あなたはブランドの新しいローダー()オブジェクトを作成し、VAR menu1

if (stage.contains(menu1)){ 
に代入されています上記の行で

、あなたは最初の行は、あなたがこのフレーム、ABを訪問するたびに実行されますのでmenu1がステージ

に現在あるかどうかをチェックしています新しいオブジェクトが毎回作成されます。その新しいオブジェクトはまだステージ上に存在しません(以前のオブジェクトはあります)。ifは常にfalseと評価されます。

これを解決するには、次の操作を行うことができます

var menu1:Loader; //just define the var here, don't assign anything yet 

//if menu1 doesn't have a value 
if(!menu1){ 

    //create a new Loader only if one doesn't exist yet 
    menu1 = new Loader(); 
    var request1:URLRequest = new URLRequest ("MENU1.swf"); 
    menu1.load(request1); 
    addChild(menu1); 
} 
+0

それは魔法のように動作しますが、フレーム2からフレーム1に、フレーム2からのSWFは、フレーム1に重なっているとき、今が発生した問題がありますだからボタンをしてください – Jack

+0

こんにちは、なぜ私のオブジェクトは私が戻って表示されません?それは本当に混乱しています – Jack

+0

フレーム2のコードで新しい質問を作成し、それがどのように動作するのか、問題が何であるかを詳しく説明することをお勧めします。 – BadFeelingAboutThis

関連する問題