软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 设计在线 > 媒体动画 > URLLoader 404 Error 与 complete事件

URLLoader 404 Error 与 complete事件

最开始发现是在AS2里用MovieClipLoader加载图片,那次地址写错了,但是依然有onLoadComplete事件触发.
请看下面的代码:

var mc:MovieClip = _root.createEmptyMovieClip("mc", 1);
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = {};
loader.addListener(listener);

// 加载一个错误的图片地址,但只要有数据返回(哪怕是404)就会触发complete事件
loader.loadClip("http://www.lite3.cn/errorJpg.jpg", mc);

listener.onLoadComplete = function(target:MovieClip):Void
{
trace("this is loadComplete!");
}

OK,上面明明是一个错误的图片地址,竟然会触发onLoadComplete事件.
然后用浏览器打开这个错误的地址看了下,是一个404Error页面.又换了好多个地址,不同域名的,可是依然会触发onLoadComplete事件.
所以猜想可能是只要有数据返回就会触发onLoadComplete事件吧(onLoadInit也是一样).
测试LoadVars后更加断定我的猜想,请看代码:

var loader:LoadVars = new LoadVars();
loader.onLoad = function (success:Boolean):Void
{
trace("success = " + success);
trace(loader);
}
// 请更改为非跨域的不存在的地址
loader.load("http://www.lite3.cn/fdsafdsa");
我想这可能是AS2的一个bug吧,不知道AS3里解决了没有,
测试后发现Loader不存在这样的问题了,
但是URLLoader,URLStream依然会触发Event.COMPLETE事件.
或许这不是bug,可能Adobe设计的时候就是complete为数据接收完毕,不论是404页面还是原本的地址.
那么我怎么才能知道是我原本想请求的数据还是一个404呢,
可能在HTTPStatusEvent.HTTP_STATUS 这个事件里会给让我区分吧.
测试发现明明由一个不存在地址跳转到404,但flashplayer收到的httpStatusCode竟然是200,就是说flashplayer认为这不是错误的请求,是正常的.
请看这个demo:
输入一个随便输入一个网址,如果有跨域请更换地址, 再看httpStatusCode和返回的data
在Event.COMPLETE事件里获取到data数据的.

原文:http://www.lite3.cn/blog/?p=713

    相关阅读
    网友评论