为什么loaderInfo.bytesTotal为零

时间:2009-08-13 03:27:08

标签: flash actionscript-3

为什么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";
    }
}

4 个答案:

答案 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的其余部分何时完成加载。