Почему метод load
для отправки URLStream
класса Event.OPEN
вместо IOErrorEvent.IO_ERROR
, когда SWF находится на веб-сервере и при попытке загрузить недопустимый URL-адрес?Почему диспетчеризация 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 - он всегда запускается, когда исполняемый SWF обращается с веб-сервера, но не при выполнении локально. Я хотел бы понять, почему это так. Почему событие отправляется по-другому, даже если его прослушивают таким же образом? – IneedHelp
Хорошо, я понял: когда SWF работает на сервере и запрашивает ресурс, которого не существует, сервер фактически отправляет сообщение об ошибке, которое считается как данные, поэтому нет события ошибки. То же самое не применялось локально, потому что не было веб-сервера для ответа с ошибкой при получении запроса на несуществующий файл. Обнаружено это, отслеживая живое с помощью Monster Debugger. – IneedHelp
В принципе, это разница между потоковой и нормальной загрузкой. –