2012-08-02 3 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

+1

필요에 따라이 대답을 수락하십시오! – Florent