Компиляция с Flex4 SDK - PullRequest
       41

Компиляция с Flex4 SDK

4 голосов
/ 20 июня 2010

Я пытаюсь скомпилировать существующий проект Flex3 с помощью Flex4 SDK. Я получаю эту ошибку:

Warning: This compilation unit did not have a factoryClass specified in Frame metadata to load the configured runtime shared libraries. To compile without runtime shared libraries either set the -static-link-runtime-shared-libraries option to true or remove the -runtime-shared-libraries option.

Полученный файл примерно такой же, как мой старый скомпилированный файл .swf Flex3. Воспроизведение результирующего файла .swf во Flash Player также приводит к следующим ошибкам:

An Actionscript error ocurred: VerifyError: Error #1014: Class spark.core::SpriteVisualElement could not be found

Если установить для атрибута компилятора static-link-runtime-shared-libraries значение true, ошибка исчезнет, ​​и все будет в порядке. Тем не менее, размер результирующего .SWF на несколько сотен больше. И это не то, что я хочу.

Я не совсем понимаю концепцию разделяемых библиотек времени выполнения, но кажется, что с возможностью статически связать их, установленной в значение true, библиотеки включены в .swf. Однако мне нравится исключать их из .swf и загружать нужную библиотеку только во время выполнения, так как мой проект, казалось, делал с Flex3 (кстати, я этого не знал).

Если я правильно понимаю, playerglobal.swc должен содержать весь необходимый код для внешних библиотек, которые должен загрузить мой .swf. Нужно ли больше скомпилированных файлов Flex4? Должен ли я что-то сделать с factoryClass в теге метаданных Frame?

Я думаю, что мой вопрос сводится к следующему: как мне скомпилировать файл Flex4 .swf того же размера, что и мой предыдущий скомпилированный файл Flex3 .swf?

Ответы [ 3 ]

5 голосов
/ 25 ноября 2010

Вы должны добавить [Frame(factoryClass="path.to.your.preloader")] в основной класс (тот, который вы установили в опциях компилятора).

1 голос
/ 21 июня 2010

Похоже, у вас могут быть проблемы с миграцией проекта.Возможно, вы захотите ознакомиться с процессом:

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

Это действительно хорошая статья с обзором различных возможностей миграции, в зависимости от того, сколько Flex4 вы хотите использовать.

1 голос
/ 20 июня 2010

Flex3 по умолчанию не использовал rsls, но вы можете включить их. Flex4 rsls включены по умолчанию, см .: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.html

Концепция разделяемых библиотек времени выполнения: разделение части вашего приложения, которая (повторно) используется и другими приложениями, поэтому пользователю требуется только один раз загрузить его. Это не сохранит ничего при первой загрузке, но сохранит при последующих загрузках. Вы могли бы сделать свой собственный rsl, но в основном именно те, которые предоставляет Adobe, должны изменить ситуацию: так как «все» будут использовать их, будет небольшая вероятность того, что необходимая библиотека уже присутствует в системе пользователя, таким образом ускорение времени загрузки вашего приложения.

playerglobal.swc никогда не содержал классов фреймворка flex, большинство из них находятся в flex.swc и framework.swc (стандартный проект flex 3 также включает в себя rpc.swc и utilities.swc - я не проверял, но они, вероятно, содержат также некоторые гибкие детали)

...