我有一个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作为雪碧图添加到舞台上。
问候
发布于 2011-05-06 16:02:12
您是否正在尝试加载与主应用本身相同的application.swf??(递归?)
发布于 2011-05-06 16:04:52
您可以添加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错误。
https://stackoverflow.com/questions/5908373
复制相似问题