Руководство по actionscript. часть 6, стр. 023
Чтобы полностью избежать подобной проблемы, безопаснее всего вообще не использовать событие Event. OPEN. Вместо этого просто применяйте методику, которая была рассмотрена в коде из листинга 28.7: добавляйте на экран любые индикаторы хода загрузки вручную перед началом загрузки.
В будущих версиях языка ActionScript аспекты поведения, зависящие от среды, которые были перечислены в табл. 28.1, возможно, будут стандартизованы, и вам больше не придется избегать использования события Event. OPEN.
Отладка с использованием класса HTTPStatusEvent
Когда HTTP-клиент запрашивает некий элемент по протоколу HTTP, HTTP-сервер возвращает код статуса, который сообщает о том, как был обработан данный запрос. Например, если HTTP-запрос был обработан успешно, HTTP-сервер вернет код статуса 200. Если обработка HTTP-запроса завершилась неудачно, сервер отправит статус ошибки, описывающий возникшую проблему. Коды статуса HTTP для ошибок загрузки зачастую представляют более подробную информацию, чем общее событие IOErrorEvent. IO_ERROR языка ActionScript, поэтому эти коды полезно использовать при отладке. Однако поддержка кодов статуса HTTP реализована не во всех средах.
Версии приложения Flash Player, реализованные в виде модулей расширения браузеров Netscape, Mozilla (Firefox), Safari, Opera и Internet Explorer (версия для операционной системы Macintosh), не поддерживают коды статуса HTTP.
При получении кода статуса HTTP от сервера приложение Flash Player осуществляет диспетчеризацию события HTTPStatusEvent. HTTP_STATUS, получателем которого является объект Loaderlnfo загружаемого элемента. Чтобы зарегистрировать приемник для получения уведомлений о возникновении события HTTPStatusEvent. HTTP_STATUS, мы используем следующий код:
oObeKTLoader. contentLoaderInfo. addEventLi stener(HTTPStatusEvent. HTTP_STATUS,
httpStatusListener);
Здесь oObeKTLoader — объект Loader, загружающий элемент, a httpStatusL istener — ссылка на функцию, которая будет обрабатывать данное событие. В функцию httpStatusLi stener передается объект HTTPStatusEvent, переменная status которого содержит код статуса HTTP. Следующий код демонстрирует типовую функцию httpStatusL istener. Обратите внимание на способ получения кода статуса HTTP из объекта HTTPStatusEvent е:
private function httpStatusListener (e:HTTPStatusEvent):void { traceC’http status: » + e. status):
}
Как бы удивительно это ни звучало, фактически приложение Flash Player осуществляет диспетчеризацию события HTTPStatusEvent. HTTP_STATUS для каждой отдельной операции загрузки, даже если не получает код статуса HTTP от сервера. В тех случаях, когда никакой код статуса HTTP не получен, переменной экземпляра status класса HTTPStatusEvent присваивается значение 0. Например, во всех следующих ситуациях переменной status присваивается значение 0:
? файл загружается локально или из некоторого источника не по протоколу HTTP;
? сервер HTTP недоступен;
? запрашиваемый URL-адрес указан неправильно;
? коды статуса HTTP не поддерживаются средой (например, приложение Flash Player выполняется в браузере Mozilla Firefox).