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

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

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

Регистрация: Oct 2012
Сообщений: 14
Question Проверка реализации интерфейса

Господа, здравствуйте!
Есть одна непонятная ситуация...
По сути: Загружаем swf модуль и проверяем реализовывает ли он интерфейс. Если да, то настраиваем модуль.
Код AS3:
private function setupModule(target:* ):void
{
   if (target is IResultModule)
   {
     //Настройка модуля
   }
}
Предок модуля реализует данный интерфейс и проверка проходит... но не всегда.
В некоторой ситуации получаем false и настройка модуля не происходит. С типом target'а все впорядке.
Данную часть кода переписал, не в лучшую сторону в плане красоты... но работает.
Но в следующем куске кода не проходит проверка на реализацию другого интерфейса, реализованного самим модулем:
Код AS3:
private function onSetupModule(event:ModuleLoaderEvent):void
			{
				if (event.module is ISetupModule)
                                {
                                   //Некие манипуляции с модулем
                                }
                        }
Очень мутное поведение flash'а... не знаю уже куда смотреть. Может кто сталкивался с похожей проблемой?

Старый 21.01.2013, 17:57
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Все просто. Смотреть надо в сторону ApplicationDomain.
Грузить нужно флешку в тот же домен, что и у подгружающей
вот выдрал пример кода из своей флешки, в которой происходит то же самое. Тут с loadBytes, но смысл тот же
Код AS3:
 
var byteArray:ByteArray = data as ByteArray; // тут у меня URLLoader'ом грузится swf и полученный байт массив уже Loader'ом загружается	
var loader:Loader= new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderCompele);
if (Security.sandboxType == Security.REMOTE) {
	var context:LoaderContext	= new LoaderContext();
	context.applicationDomain	= new ApplicationDomain(ApplicationDomain.currentDomain);
	loader.loadBytes(byteArray, context);
} else {
	loader.loadBytes(byteArray);
}
Задаем в контексте текущий домен приложения и грузим флешку с указанием контекста

Старый 21.01.2013, 19:40
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 3  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
caseyryan, в моём коде ApplicationDomain.currentDomain = null. Сдается мне что это не нормально. Не подскажете как можно это поправить?

Добавлено через 42 минуты
Дело несомненно в applicationDomain! После задания загрузчику модулей
Код AS3:
applicationDomain ={ new ApplicationDomain(ApplicationDomain.currentDomain) } // там все null
проблема стала постоянной!
Осталось придумать что и как положить в ApplicationDomain..

Старый 22.01.2013, 14:27
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код который я привел точно рабочий. loadBytes можно заменить на load() но суть от этого не поменяется.
У меня с мопощью этого кода грузятся в игру персонажи, которые применяют интерфейс, имеющийся в самой игре. Если Аппликейшн домен не указать то при проверке e.target.content is IMovable вылетит false.
Если указать - true.
Почему у вас null мне не понятно. Надо глянуть хотя бы на минимальный пример того, что там и как происходит

Старый 22.01.2013, 15:32
Agation вне форума Посмотреть профиль Отправить личное сообщение для Agation Найти все сообщения от Agation
  № 5  
Ответить с цитированием
Agation
 
Аватар для Agation

Регистрация: Oct 2012
Сообщений: 14
caseyryan, работает все следующим образом:
Запускается главный модуль приложения, из меню выбираем нужную вещицу. Загружается модуль этой вещицы. В некоторых модулях есть записи для просмотра которых нужно подгрузить модуль для данной записи.
Проблема в том что если в двух "больших" модулях, для просмотра записей одинакового типа загрузить модули(сначала в первом "большом" открываем запись, затем во втором), то первый отработает на ура а во втором возникнет проблема с проверками на реализацию интерфейсов... но если тут же открыть запись другого типа, тем самым подгрузив её модуль все отработает на ура.
Для загрузки модулей используется стандартный Module Loader обернутый во ViewStack и NavigatorContent.
В обёртке есть:
Код AS3:
creationPolicy="all"
В главном модуле при инициализации:
Код AS3:
Security.allowDomain("*");
в crossdomain.xml :
Код:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy>
	<site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" />
</cross-domain-policy>
С 1111 сообщением!

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

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

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


 


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


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