Символы разделяемой библиотеки во время компиляции во Flash
Наш проект Flash имеет следующую структуру. Два FLA-файла с графическими активами (символами), импортированные в проект с чистым кодом AS3 с использованием SWC.
Есть несколько символов, которые используются как в ui.fla, так и в login.fla, поэтому мы хотели бы поместить их в общую библиотеку, вот так.
Суть в том, что мы не хотим использовать символы shared.fla, например, в коде ui.fla, но в среде разработки, чтобы мы могли перетаскивать символы из shared.fla в символы ui.fla (без копирования). Это возможно?
1 ответ
Совместное использование активов может быть возможно через Remote Shared Library
(RSL).
Но, пожалуйста, будьте осторожны: я не видел такого в производстве, это были только мои эксперименты несколько лет назад.
Вот пример:
- Создать документ, который будет содержать общие активы. Пусть у него есть имена shared_lib
- Создайте какой-нибудь символ. Подготовьте его для РГБ:
- В Flash IDE выберите "Библиотека" -> ваш символ (щелкните правой кнопкой мыши)-> "Свойства"...
- Выбрать
Export for ActionScript
&Export in frame 1
введите название символа - Выбрать
Export for runtime sharing
, Введите имя этого swf: 'shared_lib.swf' OK
Publish
это в SWF и SWC
Итак, теперь у нас есть библиотека. Давайте создадим некоторый актив, который будет использовать его
- Создайте другой документ, назовем его "mainui".
- Вернитесь к "shared_lib", выберите в
Library
экспортированный символ,CTRL + C
(или щелкните правой кнопкой мыши, скопируйте) - Вернуться к только что созданному mainui, вставить
Library
, - Создайте какой-нибудь другой символ, экспортируйте его для ActionScript и поместите в него наш импортированный символ
- Скомпилируйте его, экспортируйте в SWC, SWF.
На этом этапе мы имеем shared_lib.swf
, shared_lib.swc
а также mainui.swc
, В выход mainui
мы можем работать и с внешним активом. Вы можете создать другие активы таким же образом.
Давайте поговорим о настройках проекта, которые будут использовать наши активы.
Итак, что мы имеем именно на данный момент? Mainui.swc
имеет символ, который содержит другой "виртуальный" символ. Если вы просто попытаетесь загрузить mainui.swf
в браузере с каким-то профилировщиком вы увидите, что сначала он загружается mainui.swf
затем загружается shared_lib.swf
,
Но если вы попытаетесь создать какой-то проект и включить mainui.swc
Вы получите ошибку с неопределенным символом, потому что все, что имеет mainui - это просто виртуальная ссылка на символ из shared_lib.
Чтобы решить эту проблему, вы должны полностью включить shared_lib.swc
в вашем проекте. В этом случае у вас будет:
- через директиву пути к библиотеке: опционально включен
mainui.swc
- через директиву include-library: полностью включено
shared_lib.swc
Теперь это будет работать.
Надеюсь, это будет полезно.