2012-01-16 101 views
0

当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 

回答

0

当SWF文件在服务器上运行,并请求不存在的资源,服务器实际上将其算作数据的错误信息,因此不存在错误事件。这同样不适用于本地,因为没有Web服务器在发出不存在文件的请求时响应错误。通过跟踪怪物调试器来发现这一点。

0

Event.OPEN被触发的负载。所以总会被调用。

你可能想HTTPStatusEvent.HTTP_STATUS

+0

我保留HTTP_STATUS作为替代方法,但是关于Event.OPEN - 当从Web服务器访问执行的SWF时,它始终被触发,但在本地执行时不会触发。我想明白为什么。即使以相同的方式收听,为什么事件的发送方式也不同? – IneedHelp 2012-01-16 16:46:54

+0

好吧,我明白了:当SWF在服务器上运行并且正在请求一个不存在的资源时,服务器实际上会发送一条错误消息作为数据计数,因此没有错误事件。这同样不适用于本地,因为没有Web服务器在发出不存在文件的请求时响应错误。通过跟踪怪物调试器来发现这一点。 – IneedHelp 2012-01-16 17:28:13

+0

基本上,它是流媒体和正常加载之间的区别。 – 2012-01-16 20:33:17