AS3 альтернатива *_exclude.xml файлам, динамическая загрузка определений классов

Я вот уже пару дней бьюсь головой об стену и надеюсь, что кто-нибудь может указать мне правильное направление.

Работая в очень большом Flash-приложении, ранее в AS2/CS3, у меня была бы такая установка:

root.swf
-- modules
---- code_a.swf
---- code_b.swf
-- views
---- view_a.swf
---- view_b.swf

С помощью _exclude.xml файлы, я мог бы исключить классы, определенные в code_a а также code_b из выхода.swf из view_a а также view_b, root.swf будет нести ответственность за загрузку модулей кода до view_a или же view_b, гарантируя, что определения классов, которые view_a а также view_b зависело от существующего.

Эта проблема

Мы недавно перешли на использование Actionscript 3/CS5. *_exclude.xml файлы больше не существуют. Чтобы получить ту же функциональность, что и выше, я попробовал следующее:

Моя настройка теперь выглядит примерно так:

root.swf
-- modules
---- class_a.as
---- class_b.as
-- views
---- view_a.swf
---- view_b.swf

использование mxmlc Скомпилировать root.swf, view_a.swf а также view_b.swfПроходя мимо -externs возможность указать классы, которые будут загружены извне (два класса в modules). Это гарантирует, что класс будет исключен из скомпилированного SWF.

использование compc Скомпилировать class_a.as а также class_b.as в classes.swf, с помощью -directory=true чтобы получить доступ library.swf для внешней загрузки.

Тем не менее, когда я пытаюсь запустить один из двух файлов просмотра, которые зависят от classes.swf, Я получаю ошибки во время выполнения, говорящие мне, что определение класса не присутствует.

Текущее решение

Я разработал обходной путь, который в настоящее время меня не устраивает, так как он обратен модульному подходу, который я ранее использовал:

Вместо того, чтобы загружать модули кода, я статически связываю все определения классов, требуемые дочерними фильмами, в root.swf, При строительстве root.swfЯ использую -link-report вариант mxmlc предоставить список включенных классов. При создании дочерних SWF, я могу использовать -load-externs чтобы гарантировать, что определения классов, которые уже существуют, не будут включены в выходные данные компиляции.

Есть ли способ, которым кто-либо знает о репликации решения AS2/_exclude.xml, которое я использовал с помощью AS3/CS5?

1 ответ

Я бы порекомендовал компилировать разделяемые библиотеки в SWC.

Есть и другие варианты, такие как RSL:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf674ba-7fff.html

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

Другие вопросы по тегам