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
Надеюсь, это поможет.