Использование .swc в проекте библиотеки Flex - PullRequest
0 голосов
/ 13 апреля 2011

Я пытаюсь настроить производственную среду для примерно 10 связанных активов. Определенные элементы, визуальные и другие, будут разделены между 10 активами. Я рассматриваю каждый из них как собственный проект Pure AS3 в Flash Builder 4.

Каждый ресурс имеет связанный .fla, который выводит .swc в папку libs для этого ресурса - окончательная компиляция будет выполняться с помощью ant, а источником верхнего уровня является основной файл .as в каждом Flash Строитель проекта.

Поскольку некоторые элементы совместно используются несколькими активами, я создал проект библиотеки Flex в моей рабочей области. В этом проекте библиотеки есть папка / src со стандартной структурой, а также папка / lib /, в которую я помещаю, например, TweenLite greensock.

В дополнение к исходному коду и стороннему .swc, проект библиотеки также имеет FLA, который экспортирует .swc в папку / lib /.

Вот проблема: я не могу видеть экспорт библиотеки из этого .swc в мои связанные проекты. Теоретически каждый класс, который я экспортирую из библиотеки библиотеки Flex проекта Flex, должен быть скомпилирован в проект библиотеки .swc. Я обнаружил, что это не тот случай, и я не понимаю, почему.

Я собираюсь продолжить копать, но я хотел показать это здесь на случай, если кто-то еще столкнулся с этими проблемами. Кто-нибудь знает, что я делаю не так?

РЕДАКТИРОВАТЬ: Так что, очевидно, мой greensock .swc не компилируется в окончательный вывод. Вчера было. Я не уверен, что изменилось. Я думаю, что мой вопрос, искаженный, заключается в следующем: как я могу убедиться, что файлы .swc, включенные в путь сборки для моего проекта библиотеки Flex, имеют все свои классы, включенные в окончательный файл .swc, который генерирует FLP?

EDIT2: я обнаружил что-то вроде ужасного обходного пути. Прямо сейчас я создал один класс в своей папке src и объявляю все, что я хочу включить в любой из моих .swc - например, public var tweenLite: TweenLite, public var logo: Logo и т. Д. Я нахожу что если я объявлю это в одном из моих исходных файлов, я смогу получить к нему доступ в связанном проекте. Одного его импорта недостаточно - это означает, что мне придется вручную объявлять каждый класс, к которому я хочу получить доступ. Должен быть лучший способ. Чего мне не хватает?

1 Ответ

1 голос
/ 14 апреля 2011

У меня возникли некоторые проблемы, связанные с тем, что мы получали класс A из SDK swc 1 и класс B из SDK swc 2 (результаты ошибки blendMode), в конце мы должны были гарантировать, что все наши зависимости были скомпилированыс определенной версией SDK (тоже не весело).Я думаю, это звучит так, как будто вам нужна библиотека, содержащая исходный код из всех других библиотек, от которых зависит ваша новая библиотека.

В основном каждый swc является файлом каталога и байт-кодом ActionScript (ABC) для ActionScript (AS).) файлы, сжатые в zip-архив, поэтому вы захотите объединить обе эти части в один SWC.

Использование Runtime Shared Libraries (RSL) означает вместо того, чтобы извлекать байт-код из SWC и включать его вВаш SWF во время компиляции будет загружать SWC (называемый SWZ, когда упакован таким образом) во время выполнения.Недостатком является то, что он сохраняет все классы в swz, а не только извлекает байт-код для AS, которая вам нужна, когда это делается во время компиляции.Так что переход со связью через RSL должен дать вам желаемый результат, но я думаю, вам придется генерировать SWZ-файлы из вашей библиотеки.Возможно, вам все равно придется сделать что-то нелепое, например, иметь ссылки на все, что вы хотите в своем SWZ (из других SWC), но я считаю, что вы должны каким-то образом решить проблему таким образом ... Я продолжаю осматриватьсядля лучшего решения и отредактирую это, если я найду один:

http://tv.adobe.com/watch/adc-presents/creating-runtime-shared-libraries/

Редактировать 1:

Также нашел это:

compc -source-path ../mycomponents/components/local -include-classes CustomCellRendererComponent -directory = true -debug = false -output ../libraries/CustomCellRenderer

С этой страницы:

http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_01.html#168690

Пара мыслей об этом, когда я осматривался, 1: это будет ужасно неэффективно с точки зрения пространства, поэтому вся работа будет включать только те классы, которые вы используете, 2 еслииспользуя описанный выше метод, я, вероятно, написал бы приложение Java, которое будет проходить через папки проектов для всех имен классов, чтобы он мог генерировать список всех классов в пространстве проекта.

Спасибоза то, что выслушал мои мысли (еще WIP :),

Shaun

...