![]() |
Как избежать ошибки при обращении к загруженному контенту?
Ситуация стандартная: грузим внешний файл (картинку), как после этого узнать, что обращение loader.content не вызовет исключения? Или хотя бы подавить это исключение, чтобы не пугать пользователя (в браузере эта ошибка вываливается в отдельном окне, даже при использовании try...catch)?
Для загруженного swf понятно: contentLoaderInfo.childAllowsParent, а вот как для битмапа не нашёл... |
вообще странный вопрос... если про Allow говорить - то речь о секьюрити идет, то бишь о защите от загрузки контента с чужого сайта либо доступа к свойствам и методам, но что имеется в виду под ошибкой доступа к "битмапу"? Если проверка, что загрузилась - так на то события есть соответствующие...
|
loader.contentLoaderInfo.childAllowsParent спасло Отца советской демократии. :)
Со второго раза получилось. Оказывается, есть некоторые тонкости с http-редиректом при загрузке картинок... |
а LoaderInfo.securityError не смотрел, он не докладывает о нарушении сандбокса?
|
Не, securityError работает, если ты полез на урл, запрещённый текущей песочницей (Security.sandboxType :) ). Кстати, как поменять тип песочницы в TestPlayer? В дефолтной Security.sandboxType = "localTrusted" никаких ошибок не возникает, естественно... ;)
Здесь другой тип нарушения секьюрити ("No policy files granted access"). В конце концов, по шагам у меня получилось: 1. Грузим файл разрешений с предполагаемого урла: loadPolicyFile(...) 2. Грузим картинку (если установлено "flash.system.LoaderContext.checkPolicyFile = true;", то картинка не начинает грузиться, пока PolicyFile не будет загружен и проверен; кстати, результат проверки никак не доступен, пока не загружена картинка - это первое неудобство). 3. Если произошёл http-редирект (даже просто в другую директорию того же домена), урл картинки может оказаться не подходящим для уже загруженного PolicyFile (свойсто childAllowsParent не стало true), тогда по событию окончения загрузки получаем свойство .url у файла и пытаемся загрузить PolicyFile с нового домена/директории. 4. Теперь сидим и ждём, когда загрузится новый PolicyFile (свойсто childAllowsParent станет true). То, что нет события на окончание его загрузки - второе неудобство. Но можно, пользуясь LoaderContext.checkPolicyFile, просто снова запустить на перезагрузку картинку (куда она из кэша-то денется? ;) ). А вот если после второй загрузки картинки "childAllowsParent == false", уже можно смело говорить пользователю: "Access denied...." - это и будет корректная обработка ошибки. 5. Но зато, если теперь "childAllowsParent == true", можно, наконец, обратиться к loader.content.bitmapData :) Первый шаг можно пропускать, если редиректы происходят каждый раз. |
| Часовой пояс GMT +4, время: 09:32. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.