Подтвердить что ты не робот

Любой опыт миграции Flex 4?

Мой текущий стек разработки - это MySQL + iBatis + Spring + Spring Интеграция BlazeDS 1.01 + BlazeDS 3.2 и Flex 3 с базой Mate 0.8.9. Теперь Flash Builder 4 beta 2 отсутствует. Есть классные функции, такие как Data Centric Development (DCD), создание форм и т.д. Знаете ли вы, как Spring Blazeds Integration работает с BlazeDS 4? Что насчет Мате? Есть ли проблемы с Flex 4? Как DCD подходит для mate eventmaps. Я знаю, что лучше попробовать самостоятельно, но я просто хочу проверить, когда-нибудь кто-нибудь пытался перенести Flex 4. Если да, то какие проблемы? Вы заметили ускорение производительности? Благодарю.

4b9b3361

Ответ 1

Я ничего не могу сказать о переносе ваших сторонних компонентов. Я не использую те, которые вы упомянули.

Я могу сказать вам, однако, что вы не сможете просто загрузить существующий проект в Flash Builder 4, изменить SDK на 4.0 и ожидать, что он будет перекомпилирован. Огромное количество вещей изменилось в Flex 4, часто несовместимо.

Вот те, с которыми я столкнулся до сих пор:

  • Теперь у вас есть две библиотеки параллельных компонентов: Spark и MX. MX - это старая библиотека компонентов Flex 3, иногда называемая Halo, хотя это технически просто имя скина по умолчанию. Spark - это новая библиотека компонентов Flex 4, которая лишь частично заменяет MX.

    Они взаимодействуют друг с другом. Вам разрешено использовать оба приложения в одном приложении, и вы можете делать такие вещи, как компоненты Spark в контейнерах макета MX, например ViewStack. Есть также естественные деления в приложении, где возможно иметь одну сторону, используя Spark, другую MX, не беспокоясь о проблемах, потому что они не взаимодействуют на уровне GUI. Диалоговые окна аналогичны, например.

    Причина, по которой они все это сделали, заключается в поддержке этого нового скиннинга, о котором вы слышали: Flash Catalyst, FXG и все такое. Если вы используете запасы ореола, я не вижу, что Spark имеет значение для вас, кроме того, что это "Будущее".

    (Помимо этого: что синтаксис Markdown позволяет получить эффект бугового эха Wizard-of-Oz?)

    Джоан Лафферти (Flex SDK Quality Lead) имеет ценную статью Различия между Flex 3 и Flex 4. На страница 4 у нее есть таблица с перечислением компонентов Flex 3 MX, которые не были заменены компонентами Spark в Flex 4. Большинство из них не имеют внешний вид, например Accordion, поэтому вам не нужно их обрезать, или такие вещи, как диалоговые окна, например Alert. (Вы должны прочитать остальную часть этой статьи. Она охватывает то, что у меня нет, потому что я еще не сталкивался со всеми различиями.)

  • Говоря о скинах, в Flex 4 все еще поддерживаются только две из скинов MX от Flex 3. Более яркие скины MX исчезли, хотя есть новый набор красочных скинов, которые показывают некоторые о том, что вы можете сделать с FXG и тому подобное. Если вам действительно понравился один из тех, которые они удалили, вы можете, несомненно, воссоздать их поверх Spark, но он не доступен из коробки.

  • Многие вещи были переименованы, а некоторые замены Spark для компонентов MX имеют разные интерфейсы и поэтому имеют разные имена. Например, чтобы полностью переместиться в Spark, вам придется изменить VBox es на VGroup s. Есть много досадных небольших различий, подобных этому.

  • Из-за всей двойной библиотеки GUI, Adobe оказалась с кучей тегов MXML, таких как <Script> и <Style>, которые на самом деле не являются частью MX, которые так же хорошо подходят для Spark. Вместо того, чтобы иметь дублированный набор тегов, они переместили их в новое пространство имен XML. Это проблема для тех, кто кусочно переносит существующие приложения на основе MX, потому что это означает, что вы все еще используете псевдоним mx для библиотеки компонентов MX, поэтому эти теги, которые являются общими для обеих библиотек, все должны быть переименованы. Новое пространство имен XML по умолчанию для этих тегов fx, поэтому каждый <mx:Script> должен быть переименован в <fx:Script> и так далее. IDE не делает этого для вас при импорте проекта. Вы просто находите их один за другим, когда пытаетесь создать импортированный проект.

    Если вы планируете полностью перейти на Spark, вы можете избежать боли здесь. Вместо того, чтобы принимать псевдоним пространства имен fx по умолчанию для тегов, отличных от MX, вы можете позволить ему продолжать использовать mx, поскольку вам не понадобится это для MX, а Spark использует s в качестве значения по умолчанию.

    Ваша первая задача после установки Flash Builder 4 должна состоять в том, чтобы создать новый новый проект, чтобы вы могли его изучить и скопировать в него такие вещи, как эти объявления пространства имен.

  • Еще одно выпадение всей ошибки MX против Spark и пространства имен - это то, что ваш CSS может нуждаться в настройке. Для этого Flex имеет нестандартное расширение для CSS, которое выглядит следующим образом:

    @namespace mx "library://ns.adobe.com/flex/mx";
    mx|Application {
        ....
    
  • Все URL-адреса пространства имен были изменены как между Flex 3, так и Flex 4, и, по крайней мере, один экземпляр снова изменился во время бета-процесса Flex 4.

    http://www.adobe.com/2006/mxml теперь http://ns.adobe.com/mxml/2009 library://ns.adobe.com/flex/halo теперь library://ns.adobe.com/flex/mx

  • Форма local() для указания встроенных имен шрифтов по их общему имени в CSS больше не работает. Вы должны использовать форму url() и указать путь к файлу шрифта.

    Ловушка, о которой стоит опасаться, заключается в том, что это означает, что если вы встраиваете несколько вариантов одного шрифта (например, нормальный и жирный шрифты), ваш предыдущий код относится к тому же имени шрифта, но ваш новый будет указывать на два разных файлы, потому что два веса не находятся в одном файле .ttf или .otf. Например, это:

    @font-face {
        src: local("Verdana");
        fontFamily: VerdanaEmbedded;
        fontWeight: normal;
    }
    @font-face {
        src: local("Verdana");
        fontFamily: VerdanaEmbedded;
        fontWeight: bold;
    }
    

    необходимо изменить на это:

    @font-face {
        src: url("/Library/Fonts/Verdana.ttf");
        fontFamily: VerdanaEmbedded;
        fontWeight: normal;
    }
    @font-face {
        src: url("/Library/Fonts/Verdana Bold.ttf");
        fontFamily: VerdanaEmbedded;
        fontWeight: bold;
    }
    

    В Flex 3 компилятор предположил, что два файла шрифта .ttf, указанный выше код ссылается на атрибут fontWeight. В Flex 4 компилятор делает это явно.

  • Если вы вставляете шрифты в свое приложение и продолжаете использовать элементы управления MX, текст может исчезнуть или вернуться к шрифту по умолчанию. Это связано с тем, что по умолчанию Flex 4 использует другой механизм вставки шрифта под капотом для поддержки улучшенного механизма рендеринга шрифтов в Flash Player 10. Чтобы внедрить шрифт более старым способом, чтобы старые элементы управления MX все еще могли его использовать, вы необходимо установить атрибут embedAsCFF CSS в false.

  • Механизм состояний совершенно другой. Этот код Flex 3:

    <mx:State name="alternate">
        <mx:SetProperty target="{myField}" name="editable" value="false"/>
    </mx:State>
    ....
    <mx:Form ...>
        <mx:TextInput id="myField"/>
        ....
    </mx:Form>
    

    становится таковым в Flex 4:

    <mx:State name="alternate"/>
    ....
    <mx:Form ...>
        <mx:TextInput id="myField" editable.alternate="false"/>
        ....
    </mx:Form>
    

    Новый способ имеет для меня больше смысла, поскольку он помещает все отдельные состояния компонентов в сам тег компонента, а не вверх вверху файла MXML в подробном блоке <mx:State>, но переносит на новый механизм - это немного измельчение. Преобразование не автоматизировано с помощью IDE, хотя это действительно могло быть.

  • Есть теги, которые больше не разрешены в качестве прямых дочерних элементов тега <Application>. Они делятся на несколько категорий: валидаторы, эффекты и т.д. Теперь вам нужно упаковать их в новый тег <fx:Declarations>, например:

    <fx:Declarations>
        <mx:Dissolve id="myTransition" duration="100" target="{this}"/>
    </fx:Declarations>
    
  • В Flash Builder появилась новая опция проекта, которая позволяет вам продолжать использовать только один SDK Flex 3.5 без каких-либо искры для упрощения миграции. Это хорошо для начальных тестов, но в какой-то момент вы хотите двигаться вперед, после чего вам придется бороться со всем вышеперечисленным.

Новый компилятор мне кажется не намного быстрее. Я не сравнивал это, просто продолжаю чувствовать, что для меня действительно имеет значение, поскольку мне все еще кажется, что я стуча головой по столу.:) Это, конечно, не использует другие 7 ядер в моей коробке разработки. Хмм.

Ответ 2

Вот несколько вещей, которые могут помочь:

  • Самая последняя версия BlazeDS - 3.2.0.3978. Я не слышал объявлений о новой версии.
  • Поскольку вы будете хранить одну и ту же версию BlazeDS, перенос существующего кода на Flex 4 не должен влиять на ваш конец (Spring интеграция BlazeDS, iBATIS, MySQL и т.д.).
  • Mate еще официально не поддерживает Flex 4. У меня были ошибки компиляции, когда я пытался переключиться. Вот ссылка на обсуждение Порт Flex 4.

Удачи!