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

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

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

Регистрация: Apr 2004
Адрес: город 312
Сообщений: 116
По умолчанию Доступ из Flex к подгруженным swf написанных на Flash/Flex

Ситуация:
Есть главное Flex приложение, которое грузит в себя swf-ки, которые могут быть и флешовыми и флексовскими.
Написан интерфейс IModule для общения с подгруженными модулями.
Во Flash интерфейс имплементируется в DocumentClass, во Flex имплементируется след. образом(вычитал из справки):
<mx:Application implements="IModule" ...

При загрузке модуля через moduleSwfLoader, при событии INIT делаю следующее:
var module:IModule = moduleSwfLoader.content as IModule;
ну и дальше идут вызовы методов...

Трабл в следующем: если swf-ка собрана на Flash, то все замечательно работает. Однако в случае с Flex swf, не срабатывает приведение типов, и module становится null-овым.

Есть идеи?
__________________
человек - переходная ступень от обезьяны к программисту

Старый 11.01.2009, 05:09
BulletStein вне форума Посмотреть профиль Отправить личное сообщение для BulletStein Найти все сообщения от BulletStein
  № 2  
Ответить с цитированием
BulletStein

Регистрация: May 2008
Сообщений: 6
Думаю надо указать: загружать модуль в ApplicationDomain.currentDomain.
Например, при загрузке модуля с помощью IModuleInfo это делается так.

var partModuleInfo:IModuleInfo = ModuleManager.getModule("part.swf");
partModuleInfo.load(ApplicationDomain.currentDomain);

или я просто не понял вопрос :P

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

Регистрация: Apr 2004
Адрес: город 312
Сообщений: 116
прошу прощения за непонятную формулировку
я не использую Flex модули и при загрузке не использую ModuleManager
модулями я называю обычные swf, сделанные на Flash AS3, или Flex и гружу их с помощью SWFLoader
__________________
человек - переходная ступень от обезьяны к программисту

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

Регистрация: Jun 2005
Адрес: Санкт-Петербург
Сообщений: 159
почитай про SystemManager - тебе поможет.
__________________
F.U.C.K.I.N.P.U.N.K.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Угу, Application не является документ классом флексовой SWF, так что если loadedSWF as IModule == null -> Читаем тут:
Код AS3:
/**
	 *  @private
	 *  If a class wants to be notified when the Application instance
	 *  has been initialized, then it registers a callback here.
	 *  By using a callback mechanism, we avoid adding unwanted
	 *  linker dependencies on classes like HistoryManager and DragManager.
	 */
	mx_internal static function registerInitCallback(initFunction:Function):void
	{
		if (!allSystemManagers || !lastSystemManager)
		{
			return;
		}
 
		var sm:SystemManager = lastSystemManager;
 
		// If this function is called late (after we're done invoking the
		// callback functions for the last time), then just invoke
		// the callback function immediately.
		if (sm.doneExecutingInitCallbacks)
			initFunction(sm);
		else
			sm.initCallbackFunctions.push(initFunction);
	}
И делаем выводы

а так же:
Код AS3:
//----------------------------------
    //  application
    //----------------------------------
 
	/**
	 *  The application parented by this SystemManager.
	 *  SystemManagers create an instance of an Application
	 *  even if they are loaded into another Application.
	 *  Thus, this may not match mx.core.Application.application
	 *  if the SWF has been loaded into another application.
	 *  <p>Note that this property is not typed as mx.core.Application
	 *  because of load-time performance considerations
	 *  but can be coerced into an mx.core.Application.</p>
	 */
	public function get application():IUIComponent
	{
		return IUIComponent(_document);
	}
__________________
Hell is the possibility of sanity


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

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

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


 


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


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