Загрузка модулей Flex, скомпилированных с помощью Flex 4 SDK, в приложение, скомпилированное с помощью Flex 3.5 - PullRequest
2 голосов
/ 30 октября 2010

Я работаю над функцией для приложения, которое требует функциональности Flex 4.Из-за некоторых проблем с переносом приложения с Flex 3.5 на 4.0 я решил реализовать эту функцию в виде модуля, скомпилированного с Flex 4.0.Теория состоит в том, что приложение останется скомпилированным во Flex 3.5 и загрузит модуль, когда ему это потребуется.

Вот код загрузки модуля:

public function loadDiagModule():void {
    var moduleLoader:ModuleLoader = new ModuleLoader();
    moduleLoader.url = "module/DiagrammerModule.swf";
    moduleLoader.loadModule();
    moduleLoader.addEventListener(ModuleEvent.READY, onModuleReady);
}

protected function onModuleReady( moduleEvent:ModuleEvent ):void
{
    var moduleInfo:IModuleInfo = moduleEvent.module;
    var sample:IDiagrammerModule = moduleInfo.factory.create() as IDiagrammerModule;
    Application.application.addChild(sample.testRender());
}

К сожалению, я сталкиваюсь со временем выполненияошибка при загрузке модуля в приложении:

VerifyError: Error #1014: Class mx.modules::ModuleBase could not be found.
 at flash.display::MovieClip/nextFrame()
 at mx.core::FlexModuleFactory/deferredNextFrame()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:631]
 at mx.core::FlexModuleFactory/update()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:401]
 at mx.core::FlexModuleFactory/moduleCompleteHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:718]

Я подозреваю, что это может быть результатом несоответствия в определении класса ModuleBase в Flex 3.5 и 4.0.Есть ли какие-то изменения в конфигурации моего приложения и / или проекта модуля, которые бы исправили эту ошибку?

Вот некоторая информация о моей конфигурации: IDE: Плагин Flash Builder 4

Проект приложения

  • SDK: Flex 3.5
  • фреймворк платформы: объединен в код
  • Дополнительные аргументы компилятора: -locale = en_US, ja_JP -source-path =. / Locale / {locale}

Модуль проекта

  • SDK: Flex 4.0
  • Framework Framework: использовать SDK по умолчанию (общая библиотека времени выполнения)
  • Copy non- встроенные файлы в выходной файл: true
  • Создание доступного SWF-файла: true
  • Дополнительные аргументы компилятора: -locale en_US

1 Ответ

3 голосов
/ 30 октября 2010

Загрузка модулей, скомпилированных в другой версии SDK, возможна начиная с Flex 3.2, однако есть соображения совместимости, которые необходимо учитывать.

Он называется The Marshall Plan, и вы можете прочитать больше информации об этом здесь и здесь По существу, хост-приложение устанавливает разные песочницы для модулей, и связь между ними ограничена ( хотя все еще очень возможно).

Надеюсь, это поможет.

...