当SWF位于网络服务器上并尝试加载无效的URL时,为什么类的load
类调度Event.OPEN
而不是IOErrorEvent.IO_ERROR
类?为什么调度Event.OPEN而不是IOErrorEvent.IO_ERROR?
在本地运行SWF时同样不适用。
示例代码:
var CLS_UrlStream:URLStream = new URLStream(); // Initialize URLStream class instance.
CLS_UrlStream.addEventListener(Event.OPEN, FUN_StreamHandler); // Listen for successful connections.
CLS_UrlStream.addEventListener(IOErrorEvent.IO_ERROR, FUN_StreamHandler); // Listen for conenction errors.
CLS_UrlStream.load(new URLRequest("InvalidURL")); // Load file.
private function FUN_StreamHandler(FUN_PAR_Event:Event):void {
trace("EVENT TYPE: " + FUN_PAR_Event.type);
}
// Outputs: EVENT TYPE: open
我保留HTTP_STATUS作为替代方法,但是关于Event.OPEN - 当从Web服务器访问执行的SWF时,它始终被触发,但在本地执行时不会触发。我想明白为什么。即使以相同的方式收听,为什么事件的发送方式也不同? – IneedHelp 2012-01-16 16:46:54
好吧,我明白了:当SWF在服务器上运行并且正在请求一个不存在的资源时,服务器实际上会发送一条错误消息作为数据计数,因此没有错误事件。这同样不适用于本地,因为没有Web服务器在发出不存在文件的请求时响应错误。通过跟踪怪物调试器来发现这一点。 – IneedHelp 2012-01-16 17:28:13
基本上,它是流媒体和正常加载之间的区别。 – 2012-01-16 20:33:17