11 октября 2010, 03:32 (5156 дней назад, №8803)О миграции с Flex 3 на Flex 4
Пришло время переезжать с Flex Builder 3 на
Flash Builder 4. В принципе, я ожидал, что не всё будет гладко но, честно говоря, не думал, что отличия так серьёзны.
Попытка просто импортировать и скомпилировать проект в четверке успехом конечно не увенчалась - полезли ошибки.
Дело в том, что в четверке появились новые компоненты Spark ("s:") дополнительно к старым Halo ("mx:"). Проблема в том, что старые mx компоненты по умолчанию работают не так, как работали в тройке. Это проявляется во многом (см. ссылки ниже).
Новые Spark компоненты вовсе не являются заменой для mx. К примеру, TabNavigator, DataGrid, AdvancedDataGrid, Box - там просто нет, а те что есть, с аналогичными mx'овским названиями, выглядят и работают не так, как в тройке.
Это, конечно, не случайно и объясняется другой концепцией - Adobe решили полностью развязать функционал компонента и его визуальное представление. Spark компоненты - намного примитивнее и требуют написания к ним скинов. Т.е. если хотите получить кнопочку как была в mx, вам надо в отдельном mxml файлике
описать специальными тэгами все её состояния. Допустим, что нажатая кнопка это rectangle такого цвета, отжатая другого и т.д. И так для всех контролов. Можно конечно это делать не вручную, а генерить код из
Flash Catalyst, но суть проблемы не меняется.
Т.е. в любом случае, если подходить к вопросу "в лоб" - это длительная и кропотливая работа.
Да, можно смешивать Halo и Spark компоненты в одном mxml. Но это теоретически. На практике всё это будет работать не так, как в тройке. И с массой оговорок, далеко не очевидных.
Более того, когда я попытался пойти по пути смешения - начали вылезать всякие загадочные run-time ошибки, причины которых выявить не удалось.
В итоге, временно проблема была решена следующим образом:
Идём в
Project / Properties / Flex Compiler / Additional Compiler ArgumentsВ опциях компилятора добавляем:
-theme="C:\PROGRAM FILES\ADOBE\ADOBE FLASH BUILDER 4\SDKS\4.0.0\FRAMEWORKS\THEMES\HALO\halo.swc"Таким образом, весь старый код компилится и работает практически так же, как в тройке (есть отличия, но их оказалось несложно поправить).
Т.е. получается такая работа с Flex Builder 3 в среде Flash Builder 4.
Полезные ссылки:
http://www.adobe.com/devnet/flex/articles/flex4sdk_whatsnew.htmlhttp://www.adobe.com/devnet/flex/articles/flex3and4_differences.htmlhttp://insideria.com/2010/05/transitioning-from-flex-3-to-f.htmlhttp://www.adobe.com/devnet/flex/articles/flex3_to_flex4_transitioning.html