1

我有一个仅加载外部 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 作为 Sprite 添加到舞台上。

问候

4

2 回答 2

0

您是否尝试加载与主应用程序本身相同的 application.swf?(递归???)

于 2011-05-06T08:02:12.403 回答
0

您可以添加 2 个额外事件以更好地监控加载情况。这两个是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 错误。

于 2011-05-06T08:04:51.670 回答