0

我在下面使用这个预加载器 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

4

3 回答 3

0

问题是,当您在线上传它时,程序试图到达您上传它的站点 FTP 上的 movie.swf。所以movie.swf到你自己的域,然后粘贴它的url。例如:

l.load(new URLRequest("http://mysite.com/movie.swf"));
于 2012-07-20T13:15:29.703 回答
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 = [标题];

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

于 2013-09-02T16:16:28.557 回答
0

如果它不能在线工作但在本地工作,那么这里有几个很好的起点。

  1. 确保您的文件位于您的应用程序认为的位置
  2. 确保从闪存导出时,您的网络设置设置为远程而不是本地。要检查这一点,请转到“发布设置”,然后转到“Flash”选项卡,然后转到“本地播放安全”的高级部分。

侦听错误而不只是 loader 上的进度/完成事件是一种很好的做法,这样您就可以更轻松地追踪这些问题。

IOErrorEvent.IO_ERROR听众会SecurityErrorEvent.SECURITY_ERROR确认上述可能存在的问题。

于 2012-07-19T23:32:04.507 回答