在Flash AS3中捕获未处理的IOErrorEvent

时间:2011-04-14 22:01:09

标签: flash actionscript-3

错误#2044:未处理的IOErrorEvent:。 text =错误#2036:加载从未完成。

这就是我每次尝试使用Loader加载不存在的图像时看到的内容。我正在获取一个URL列表,无法验证它们是否指向任何有用的内容。每当遇到404时它都会给我错误。

我试图捕获每个可用IOErrorEvent的错误(其中有7个),但它们似乎都没有捕获404.是否有一些其他网络事件我可以寻找来捕获这个条件?!我觉得我错过了一些明显的东西。

我真正喜欢的是能够捕捉到这个事件,无论其描述如何,只是处理它...有点像

myLoader.addEventListener(IOErrorEvent。*,dealWithError);

但这是非法的。我甚至尝试过捕捉

HTTPStatusEvent.HTTP_STATUS

但是从来没有回电话,因为,我猜,它在处理错误事件后获得HTTP状态,因此,因为它在“未处理”错误事件上失败,它就会丢失。是否有我不在IDE中的事件?

所有帮助表示赞赏。

4 个答案:

答案 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.");
       }
    }
}