在Flash AS3中捕获未处理的IOErrorEvent

问题描述 投票:12回答:4

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

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

我已经尝试使用每个可用的IOErrorEvent捕获错误(其中有7个),但是似乎没有一个捕获404。我是否可以寻找其他网络事件来捕获这种情况? !我觉得我缺少明显的东西。

我真正想要的是不管事件的描述如何都能够捕获该事件并对其进行处理……有点像

myLoader.addEventListener(IOErrorEvent。*,dealWithError);

但是那是非法的。我什至尝试捕捉

HTTPStatusEvent.HTTP_STATUS

但是永远不会回叫,因为,我猜想,它在处理错误事件后会获得HTTP状态,因此,由于它在“未处理的”错误事件上失败,因此会丢失。我忽略了IDE中没有的事件吗?

感谢所有帮助。

http actionscript-3 flash
4个回答
22
投票

如果您使用的是装载机,尝试将eventListener添加到加载程序的contentLoaderInfo中,例如

myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);

4
投票

您必须收听IOErrorEvent.IO_ERROR对象的URLLoader

urlLoader.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
function loaderIOErrorHandler(errorEvent:IOErrorEvent):void{
    trace("ioErrorHandler: " + errorEvent);
}

如果您跟踪事件对象,那么它应该为您提供有关正在发生的事情的信息。


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

2
投票

您是否尝试过

loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerIOErrorEvent);

[编辑]还包括contentLoaderInfo事​​件吗?

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );
© www.soinside.com 2019 - 2024. All rights reserved.