當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