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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.06.2010, 00:14
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 21  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
Сообщение от wvxvw Посмотреть сообщение
А как мне еще обратиться к статическому методу класса из другого домейна?
возможно не правильно понимаю суть трэда, но:
Код AS3:
var c:Object = appDomain.getDefinition( name );
c.staticMethod();

Старый 21.06.2010, 00:30
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 22  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
allowDomain прекрасно отработал. Попробуйте из лоадера обратиться к какому-нибудь методу или свойству загружаемой флешки не разрешая allowDomain(). Мук еще говорит о BitmapData#draw(), но я тут несколько тушуюсь, потому что draw() относится к разрешению распространителя (crossdomain.xml), сам не проверял. Обратиться к методу класса или к методам экземпляра - разные вещи. Класс находится в ApplicationDomain некоторого SecurityDomain'а. Если он виден по getDefinitionByName - он находится там же, где расположен класс инстанцированного объекта, в методе которого был вызван getDefinitionByName. И если в текущем аппдомене нет такого класса (Loader), то и вызвать его метод вы не сможете. Однако можно было сделать getDefinition аппдомена loader'а и забрать оттуда этот класс и вызвать его метод.

UPD. BloodHound опередил.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 21.06.2010, 05:09
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 23  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
BlooDHounD:
я проверю, но по-моему получить appdomain загрузчика в загружаемой флешке не дадут. Но если это работает, то все равно не понятно почему нужно только через рефлекшн обращаться, теряется типизация, да и вообще просто не удобно.
__________________
Hell is the possibility of sanity

Старый 21.06.2010, 05:39
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 24  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
... да и вообще просто не удобно.
Типа адобовцев это когда-то волновало
__________________
trace("Остановите Землю, я сойду!!!");

Старый 21.06.2010, 22:30
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 25  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от wvxvw Посмотреть сообщение
я проверю, но по-моему получить appdomain загрузчика в загружаемой флешке не дадут. Но если это работает, то все равно не понятно почему нужно только через рефлекшн обращаться, теряется типизация, да и вообще просто не удобно.
Дадут, не поморщатся ) Через рефлекшн не надо. Зачем нам через ж. А надо загрузить куда я уже говорил )Теперь можно решить старую проблему конфликтов классов, загруженных и существующих. И твой пример будет работать, если Loading загрузить в текущий security domain и правильный app domain. И типизация останется.
И таки allowDomain тут правда, не при чем )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 21.06.2010 в 22:34.
Старый 22.06.2010, 17:08
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 26  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Какие конфликты классов? - их всего один есть, и не должно / не может быть больше. Еще раз, я не могу грузить в текущий домейн по ряду других причин, этот вопрос как бы вообще не обсуждается. Мне не нужно загрузить контент в один и тот же домейн (если так делать, то проблем с безопасностью в принципе быть не должно), мне нужно установить доверительные отношения между двумя разными домейнами, и при этом хочется работать не используя рефлекшн. (appDomain.getDefintition().foo() - это работа через рефлекшн, наличие foo() не гарантировано / не возможно проверить на этапе компиляции).
__________________
Hell is the possibility of sanity

Старый 22.06.2010, 18:37
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 27  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от wvxvw Посмотреть сообщение
мне нужно установить доверительные отношения между двумя разными домейнами
Сейчас речь идет об ApplicationDomain или о доменах безопасности?
Да, allowDomain устанавливает разрешение обращаться из другого доменах безопасности.
И allowDomain никаким боком не завязан с ApplicationDomain. Лоадер ты дергал из совершенно другого ApplicationDomain, в котором его не было.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 22.06.2010, 20:35
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 28  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А вас как зовут? (Ц) Райкин.
Ну так и как тогда обрарится к статическому методу в другом домейне не используя рефлекшн? И почему Security.allowDomain не позволяет это сделать? Есть какие-то логические предпосылки почему это должно быть невозможно?
Кстати, не позволяет плеер обращаться к другому домейну не смотря на Security.allowDomain() ни в загрузчике ни в загружаемом файле.

Код:
Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security sandbox violation: http://loading.tld/loading.swf cannot load data from http://loaded.tld/loaded.swf.
Код AS3:
// Loaded
Security.allowDomain("http://loading.tld");
super.parent.parent.loaderInfo.applicationDomain.getDefinition("tld.wvxvw.bugs.Loading");
Код AS3:
// Loading
Security.allowDomain("http://loaded.tld");
var c:Object = li.applicationDomain.getDefinition("tld.wvxvw.bugs.Loaded");
Так что вариант с рефлекшном нотже не прокатит...
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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