Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 在Flash AS3中捕获未处理的IOErrorEvent_Http_Actionscript 3_Flash - Fatal编程技术网

Http 在Flash AS3中捕获未处理的IOErrorEvent

Http 在Flash AS3中捕获未处理的IOErrorEvent,http,actionscript-3,flash,Http,Actionscript 3,Flash,错误#2044:未处理的IOErrorEvent:。text=错误#2036:从不加载 完成 这就是我每次尝试使用加载器加载不存在的图像时所看到的。我得到了一个URL列表,无法验证它们是否指向任何有用的内容。每当它遇到404,它就会给我这个错误 我试图用所有可用的IOErrorEvent捕捉错误(共有7个),但它们似乎都无法捕捉404。有没有其他的网络事件可以让我发现这种情况?!我觉得我错过了一些明显的东西 我真正想要的是能够捕捉到事件,而不管它的描述如何,并处理它。。。有点像 myLoader

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

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

我试图用所有可用的
IOErrorEvent
捕捉错误(共有7个),但它们似乎都无法捕捉404。有没有其他的网络事件可以让我发现这种情况?!我觉得我错过了一些明显的东西

我真正想要的是能够捕捉到事件,而不管它的描述如何,并处理它。。。有点像

myLoader.addEventListener(IOErrorEvent.*, dealWithError);
但这是违法的。我甚至试着接球

HTTPStatusEvent.HTTP_STATUS
但这永远不会回调,因为,我猜,它在处理错误事件后会获得HTTP状态,因此,当它在“未处理”错误事件上失败时,它就会丢失。是否有我忽略的IDE中没有的事件

感谢您的帮助。

您试过了吗

loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerIOErrorEvent);
[编辑]
是否还包括contentLoaderInfo事件

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );

它看起来像是
ioerrevent.IO\u ERROR
。还要确保使用
urloader
检索图像

根据评论中的示例:

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.");
       }
    }
}
你必须倾听物体的声音


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

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

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

您使用的是
Loader
还是
URLLoader
?我使用Loader是因为我正在将图像加载到对象中。我应该使用URLLoader,然后将字节数组流式传输到MC中吗?如果这是解决方案,我会这么做。。。URLLoader确实捕获IO_错误并正确处理它。。。我想bytestream方法(多么可怕的kluge!)就是答案。。。写下来,我给你打勾。:)通常情况下,我在回答中建议的方法应该适用于加载程序:)是,以及其他6个IOErrorEvents。他们都不是罪魁祸首,我也不知道如何真正找出它看到的错误。你能把所有相关的代码发布到你的myLoader对象吗。在这一点上没有你的代码,我们只是猜测。我的直觉告诉我,你没有正确地确定某件事的范围。还可以使用更多信息编辑我的帖子。@Dr.Dredel,请确保您使用的是与上述示例类似的
urloader
。同意,但请添加代码以实际绘制图像,否则这是毫无意义的!:)这里有一个例子…哦,我明白了。。。对不起,我忽略了你把它装进加载器。。。好啊好。。。如果有人看到这个答案,请注意这里缺少一行,您必须将格式设置为二进制,否则您将在尝试将数据加载到加载程序时遇到异常。。。否则,上面的工作。啊垃圾。。。Michiel Standaert的答案是我实际问题的“正确”答案,但我对你的答案投了更高的票,因为这也是一个很好的解决方案。我没有使用URLLoader(尽管这是一个替代解决方案…读取ByTestStream并将其加载到加载程序中),这是我直接使用的加载程序对象,它没有捕获IO_ERRORa HA!那是他们藏起来的地方。。。非常聪明!(事实上太聪明了一半)。我知道event.complete是在那里触发的,所以ioError也是在那里触发的才合乎逻辑;)是的,即使在做了2年多的flash开发人员之后,我仍然偶尔犯这个错误。超级刺激。
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);