Preloader flash AS3不再有效[GZIP问题]

时间:2012-07-19 22:59:37

标签: actionscript-3 preloader

我正在使用下面的预加载器AS3代码。它不起作用! 当我在Flash CS5.5上执行时工作正常但不在线。

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
l.load(new URLRequest("movie.swf"));

function loop(e:ProgressEvent):void
{
    var perc:Number = e.bytesLoaded / e.bytesTotal;
    percent.text = Math.ceil(perc*100).toString();
}

function done(e:Event):void
{
    removeChildAt(0);
    percent = null;
    addChild(l);
}

我发现了问题和解决方案!

问题是因为我的在线服务器在Apache上为mod_deflate选项启用了gzip。

mod_deflate模块提供DEFLATE输出过滤器,允许服务器的输出在通过网络发送到客户端之前进行压缩。

所以movie.swf是用gzip压缩的。这是个大问题。

解决方案:

好吧,只需在服务器根文件夹中创建或放入一些代码到.htaccess文件中。

创建一个文件(或将此代码放入).htaccess

SetEnv no-gzip dont-vary 

# Don't compress images/flash  
SetEnvIfNoCase Request_URI \ 
\.(?:gif|jpe?g|png|swf|flv)$ no-gzip dont-vary 

玩得开心:P

3 个答案:

答案 0 :(得分:0)

如果它不在线工作但在本地工作,那么这里有一些好的开始。

  1. 确保您的文件位于您的应用程序认为的位置
  2. 确保从Flash导出时将网络设置设置为远程而非本地。要检查此项,请转到“发布设置”,然后选择“Flash”选项卡,然后转到“本地播放安全性”的高级部分。
  3. 听取错误而不仅仅是加载器上的进度/完整事件是一种很好的做法,然后您可以更轻松地追踪这些问题。

    IOErrorEvent.IO_ERRORSecurityErrorEvent.SECURITY_ERROR听众会确认上述可能出现的问题。

答案 1 :(得分:0)

问题是,当你在线上传时,程序试图到达你上传它的网站上的movie.swf。所以movie.swf到你自己的域名,然后粘贴它的url。 e.g:

l.load(new URLRequest("http://mysite.com/movie.swf"));

答案 2 :(得分:0)

如果您可以访问服务器的.htaccess文件,那么您的解决方案效果很好,但如果您没有,那该怎么办。我发现我可以通过在HTTP请求中添加标头来解决这个问题。默认情况下,IE将有一个名为“Accept-Encoding”的请求标头,设置为“gzip,deflate”。您可以覆盖它并将其值设置为“x”或其他内容。除了“gzip”之外的任何东西

例如

var header:URLRequestHeader = new URLRequestHeader(“Accept-Encoding”,“xxx”);

var request:URLRequest = new URLRequest(“http://www.whatever.com/myfile.zip”); request.requestHeaders = [header];

var loader:Loader = new Loader(); Loader.load方法(请求);