Flex: когда я загружаю локальный внешний SWF, приложение выгружается-выгружается бесконечно - PullRequest
1 голос
/ 06 мая 2011

У меня есть приложение Flex, которое просто загружает внешний SWF-файл, но приложение загружает и выгружает бесконечно мой 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 как Sprite на сцене.

С уважением

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Вы можете добавить 2 дополнительных события, чтобы лучше отслеживать, что происходит с загрузкой. Эти два HTTPStatusEvent.HTTP_STATUS и ProgressEvent.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.

0 голосов
/ 06 мая 2011

Вы пытаетесь загрузить тот же файл application.swf, что и основное приложение? (Рекурсии ???)

...