2015-05-27 48 views
-1

我正在使用Loader來顯示SWF。我有一個加載SWF的按鈕,我希望該按鈕關閉或隱藏或卸載SWF。關閉/卸載UiLoader as3

這裏是我的代碼部分:

var so:Boolean = false ; 
    glossary.addEventListener(MouseEvent.CLICK, glossaire) 
    function glossaire (e:MouseEvent) { 
     var myLoader:Loader = new Loader();      
     var url:URLRequest = new URLRequest("glossary.swf"); 
     if (so == false) 
     { 
      so = true ; 
      myLoader1.load(url);          
      addChild(myLoader); 
     } 
     else{ 
      so = false ; 
      //i tried 
      myUILoader.unload(); 
      removeChild(myUILoader); 
      // but my loader still appear in the stage how can remove or hide it 
     } 
    } 
+0

好吧,我想點擊一個按鈕來加載我的SWF和當它的加載,如果我點擊同一按鈕,它關閉SWF .. –

回答

0

你的問題是,您的裝載機的作用範圍是點擊功能,而你正在創建一個新的Loader每次點擊(如果你真的只需要創建一個新的加載器在第一次點擊)。此外,由於您提到myLoadermyLoader1myUILoader,因此您似乎對裝載程序的調用名稱感到困惑。

//put the loader var out of the function scope here (so it persists after the function finishes). 
var myLoader:Loader; 

glossary.addEventListener(MouseEvent.CLICK, glossaire); 

function glossaire (e:MouseEvent){ 

    //instead of using the so boolean, just check if loader is null 
    if (myLoader == null){ 
     myLoader = new Loader(); 
     myLoader.load(new URLRequest("glossary.swf"));          
     addChild(myLoader); 
    }else{ 
     myLoader.unloadAndStop(); 
     removeChild(myLoader); 
     myLoader = null; //set it to null now that it's been removed, so the next time this click function runs, a new loader will be made 
    } 
} 

如果你只想隱藏加載的SWF文件(而不是完全卸載它),你可以這樣做:

function glossaire (e:MouseEvent){ 
    //create the loader and load if it hasn't been done yet 
    if (myLoader == null){ 
     myLoader = new Loader(); 
     myLoader.load(new URLRequest("glossary.swf"));          
    } 

    //the parent property of the loader will be null if it hasn't been added (or has been removed) via addChild/removeChild 
    if(myLoader.parent != null){ 
     removeChild(myLoader); 
    }else{ 
     addChild(myLoader); 
    } 
} 
+0

謝謝你,它只是完美的作品。謝謝你這麼多 –

0

好吧,讓我來告訴你一個簡單的方法來解決這個問題,

創建一個加載完成事件Event.Complete並聽它的功能,從那裏設置一個布爾值,在你的情況下var so:Boolean並使用相同的功能,

var so:Boolean = false ; 
glossary.addEventListener(MouseEvent.CLICK, glossaire) 
function glossaire (e:MouseEvent) { 
    var myLoader:Loader = new Loader();      
    var url:URLRequest = new URLRequest("glossary.swf"); 
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfload); 
    if (so == false) 
    { 
     so = true ; 
     myLoader.load(url);          
     addChild(myLoader); 
    } 
    else{ 
     so = false ; 
     //i tried 
     myUILoader.unload(); 
     removeChild(myUILoader); 
     // but my loader still appear in the stage how can remove or hide it 
    } 
} 

function swfload(e:Event):void 
{ 
    if(e.type == Complete) 
    so = false; 
}