Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.08.2006, 01:42
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 1  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
По умолчанию Как избежать ошибки при обращении к загруженному контенту?

Ситуация стандартная: грузим внешний файл (картинку), как после этого узнать, что обращение loader.content не вызовет исключения? Или хотя бы подавить это исключение, чтобы не пугать пользователя (в браузере эта ошибка вываливается в отдельном окне, даже при использовании try...catch)?
Для загруженного swf понятно: contentLoaderInfo.childAllowsParent, а вот как для битмапа не нашёл...
__________________
Верить никому нельзя. Мне - можно. :)

Старый 30.08.2006, 13:54
FlexBuilder вне форума Посмотреть профиль Отправить личное сообщение для FlexBuilder Найти все сообщения от FlexBuilder
  № 2  
Ответить с цитированием
FlexBuilder

Регистрация: Aug 2006
Сообщений: 70
вообще странный вопрос... если про Allow говорить - то речь о секьюрити идет, то бишь о защите от загрузки контента с чужого сайта либо доступа к свойствам и методам, но что имеется в виду под ошибкой доступа к "битмапу"? Если проверка, что загрузилась - так на то события есть соответствующие...

Старый 03.09.2006, 21:45
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 3  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
loader.contentLoaderInfo.childAllowsParent спасло Отца советской демократии.
Со второго раза получилось.
Оказывается, есть некоторые тонкости с http-редиректом при загрузке картинок...
__________________
Верить никому нельзя. Мне - можно. :)


Последний раз редактировалось Dendroid; 03.09.2006 в 22:34.
Старый 03.09.2006, 22:58
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а LoaderInfo.securityError не смотрел, он не докладывает о нарушении сандбокса?

Старый 03.09.2006, 23:28
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 5  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Не, 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

Первый шаг можно пропускать, если редиректы происходят каждый раз.
__________________
Верить никому нельзя. Мне - можно. :)


Последний раз редактировалось Dendroid; 04.09.2006 в 00:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:32.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.