错误#2044:未处理的IOErrorEvent:。 text =错误#2036:加载从未完成。
这就是我每次尝试使用Loader加载不存在的图像时看到的内容。我正在获取一个URL列表,无法验证它们是否指向任何有用的内容。每当遇到404时它都会给我错误。
我试图捕获每个可用IOErrorEvent的错误(其中有7个),但它们似乎都没有捕获404.是否有一些其他网络事件我可以寻找来捕获这个条件?!我觉得我错过了一些明显的东西。
我真正喜欢的是能够捕捉到这个事件,无论其描述如何,只是处理它...有点像
myLoader.addEventListener(IOErrorEvent。*,dealWithError);
但这是非法的。我甚至尝试过捕捉
HTTPStatusEvent.HTTP_STATUS
但是从来没有回电话,因为,我猜,它在处理错误事件后获得HTTP状态,因此,因为它在“未处理”错误事件上失败,它就会丢失。是否有我不在IDE中的事件?
所有帮助表示赞赏。
答案 0 :(得分:22)
如果您使用的是装载机;尝试将eventListener添加到加载器的contentLoaderInfo,例如
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
答案 1 :(得分:4)
您必须聆听IOErrorEvent.IO_ERROR对象的URLLoader。
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
function loaderIOErrorHandler(errorEvent:IOErrorEvent):void{
trace("ioErrorHandler: " + errorEvent);
}
如果您追踪事件对象,那么它应该为您提供有关正在发生的事情的一些信息。
答案 2 :(得分:2)
你试过吗
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerIOErrorEvent);
[编辑]
还包括contentLoaderInfo事件?
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );
答案 3 :(得分:2)
看起来像IOErrorEvent.IO_ERROR
should work。另外,请确保使用URLLoader
来检索图像。
根据评论中的示例:
package {
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.geom.Rectangle;
import flash.events.Event;
public class Main extends Sprite {
private var urlLoader:URLLoader = new URLLoader();
public function Main() {
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest("http://www.java2s.com/image2.jpg"));
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlloader.addEventListener(IOErrorEvent.IO_ERROR, imageNotFound);
}
private function completeHandler(event:Event):void {
var loader:Loader = new Loader();
loader.loadBytes(urlLoader.data);
addChild(loader);
}
private function imageNotFound(ev:Event):void{
trace("File not found.");
}
}
}