2012-08-02 127 views
0

到目前爲止,我已經設法構建了一個簡單的基於文本的預加載器,可以加載外部SWF文件。我有很多預構建的SWF,並且從外部加載它們似乎是最好的選擇。我設法讓我的預加載器工作,但是我想在事件完成後刪除事件監聽器和加載器子代。請有人看看我的代碼,並解釋我做錯了什麼。刪除AS3預加載器中的事件監聽器

非常感謝你,

盧克

var req:URLRequest = new URLRequest("gallery.swf"); 
var loader:Loader = new Loader(); 
var finishLoading:Loader = new Loader(); 

finishLoading.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, done); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded); 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preload); 
loader.load(req); 

function fileLoaded(event:Event):void 
{ 
     addChild(loader); 
} 

function preload(event:ProgressEvent):void 
{ 
    var percent:Number = Math.round(event.bytesLoaded/event.bytesTotal * 100);   //this gives a percent of how much data has been loaded 
    preload_txt.text = String(percent) + "%"; 
} 

function done(event:ProgressEvent):void 
{ 
    if(event.bytesLoaded >= event.bytesTotal){ 
     removeChild(loader); 
     loader = null; 

     loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fileLoaded); 
     loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, preload); 
    } 

} 

回答

1

你收集垃圾裝載機移除事件偵聽器..扭轉之前。

if(event.bytesLoaded >= event.bytesTotal){ 
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fileLoaded); 
    loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, preload); 
    removeChild(loader); 
    loader = null; 
} 
+0

doh!這就說得通了。相對較新的AS3。感謝您的快速響應! – LJEmmerson 2012-08-02 11:09:32

+1

接受這個答案,如果它符合您的需求! – Florent 2012-08-02 12:18:24