2011-05-06 2 views
1

외부 SWF를로드하는 Flex 응용 프로그램이 있지만 응용 프로그램이 내 swf를 무한히로드하고 언로드합니다.Flex : 로컬 외부 SWF를로드 할 때 응용 프로그램이 무한대로로드됩니다.

임베디드 AS3 코드는 다음과 같습니다

<![CDATA[ 

     import mx.events.FlexEvent; 

     private var m_Application:Application; 

     private function initGenderMenuApp(evt:FlexEvent):void{ 

      m_Application = evt.target as Application; 
      m_Application.removeEventListener(FlexEvent.APPLICATION_COMPLETE, initMenuApp); 
      var loader:Loader = new Loader(); 

      trace("initApp"); 
      loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onFailedLoad); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedApp); 
      loader.load(new URLRequest("application.swf")); 

     } 
     private function onFailedLoad(evt:Event):void{ 

      trace("ERROR", evt.target); 
     } 

     private function onLoadedApp(evt:Event):void{ 


      trace("Loading Application.."); 
      var loaderInfo:LoaderInfo = evt.target as LoaderInfo; 
      loaderInfo.removeEventListener(Event.COMPLETE, onLoadedApp); 
      trace(loaderInfo.loader.content); 
      m_Application.addElement(new SpriteUIComponent(evt.target.loader.content as MovieClip));   
     } 

    ]]> 

SpriteUIComponent는 무대에서 스프라이트로 SWF를 추가하는 데 사용됩니다.

감사

+0

추적 기능은 어떻게 생겼습니까? "initApp", "응용 프로그램로드 중 .."? – rzetterberg

답변

0

당신은 주요 응용 프로그램 자체와 동일한 application.swf를로드하려고? (되풀이)

+0

application.swf에는 Main.mxml ....이 있고 다른 응용 프로그램에는 SWF를로드하는 다른 Main.mxml이 있습니다. 그게 그렇게 중요한 건가? – Manel

+0

예, 문제가되었습니다 ... – Manel

0

두 개의 추가 이벤트를 추가하여로드 상황을 더 잘 모니터링 할 수 있습니다. 이 두 가지는 HTTPStatusEvent.HTTP_STATUSProgressEvent.PROGRESS입니다. 그들은 이런 식으로 사용되는

:

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 

private function progressHandler(event:ProgressEvent):void { 
    trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); 
} 

private function httpStatusHandler(event:HTTPStatusEvent):void { 
    trace("httpStatusHandler: " + event); 
} 

지금 당신이 어떻게되는지를 더 잘 제어해야합니다. 로드가 완료 될 때까지로드 된 바이트 수를 볼 수 있으며 http 오류가 있는지 확인할 수 있습니다.