所以下面的代码是Lee的预加载器的实现,它在第一次加载时运行良好但在浏览器加载缓存文件时会发疯,从0%随机跳到100%
我试过的事情无济于事:
使用ENTER_FRAME代替进度 并完成
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
l.load(new URLRequest("http://www.foo.com/foo.swf"));
function loop(e:ProgressEvent):void
{
perc = Math.round(e.bytesLoaded / e.bytesTotal * 100);
lt.text = String(perc);
if (perc >= 100)
l.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loop);
}
function done(e:Event):void
{
l.contentLoaderInfo.removeEventListener(Event.COMPLETE, done);
addChild(l);
}
我不相信我会加载它多次:
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
Security.allowDomain("http://www.foo.com");
preLoader();
}
答案 0 :(得分:0)
我发现问题的发生是因为文件托管在插件域上。
要解决此问题,我更改了网址以引用主域名:
来自
l.load(new URLRequest("http://www.foo.com/foo.swf"))
到
l.load(new URLRequest("http://foo.maindomain.com/foo.swf"))
并添加
Security.allowDomain("http://foo.maindomain.com");