我有一个只加载外部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。
此致
答案 0 :(得分:0)
您是否尝试加载与主应用程序本身相同的application.swf? (递归???)
答案 1 :(得分:0)
您可以添加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错误。