为什么loaderInfo.bytesTotal
在服务器上运行时为零,但运行测试影片却不为零?
My action(Preload)
stop();
addEventListener(Event.ENTER_FRAME,loaderF);
function loaderF(e:Event):void{
var toLoad:Number = loaderInfo.bytesTotal;
var loaded:Number = loaderInfo.bytesLoaded;
var total:Number = loaded/toLoad;
if(loaded == toLoad){
removeEventListener(Event.ENTER_FRAME,loaderF);
gotoAndStop(2);
}
else{
preloader_mc.preloaderFill_mc.scaleX = total;
preloader_mc.precent_txt.text = Math.floor(total*100)+" %";
preloader_mc.loaded_txt.text = loaded+" Bytes / "+toLoad+" Bytes";
}
}
答案 0 :(得分:3)
这是因为您需要为服务器上的swfs禁用GZIP。
将此添加到.htaccess文件中:
SetEnvIfNoCase Request_URI \.swf$ no-gzip dont-vary
今天早上我花了很多时间
答案 1 :(得分:1)
以下代码适用于我:
loaderInfo.addEventListener(Event.COMPLETE, onComplete);
唯一的问题是当你得到bytesTotal==0
时,你无法正确监控负载进度。加载完成后,您才会收到回复。
答案 2 :(得分:0)
什么浏览器有用吗?我们看到报告只发生在IE中,而不是FF。
答案 3 :(得分:0)
我在Google App Engine中打包(暂时,在开发期间)swf。当我将其移至Google云端存储时,它很好。果然,当我比较标题时,App Engine不包括Content-Length。我做了两件事来防止这种情况发生:
1)我将估计的bytesTotal硬编码为常量,并使用它来确定完成百分比(如果bytesTotal为零),以显示进度条。
2)我将预加载器更改为MovieClip并使用currentFrame == totalFrames
确定swf的其余部分何时完成加载。