我正在使用下面的预加载器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
答案 0 :(得分:0)
如果它不在线工作但在本地工作,那么这里有一些好的开始。
听取错误而不仅仅是加载器上的进度/完整事件是一种很好的做法,然后您可以更轻松地追踪这些问题。
IOErrorEvent.IO_ERROR
和SecurityErrorEvent.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方法(请求);