Adobe flex что это

Обновлено: 04.07.2024

Общие советы по созданию прототипов см. в следующих статьях на сайте Центра разработчиков Fireworks (на англ. языке).

Статья Мэтта Стоу (Matt Stow) об использовании встроенных шаблонов CSS в Fireworks: Встроенные шаблоны CSS в Fireworks CS4.

Видеопособие Дейва Хога (Dave Hogue) по использованию Fireworks для проектирования взаимодействия и быстрого создания прототипов:

Создание страниц

Расположение общих элементов проекта

Расположите на холсте элементы, например, панели навигации и фоновые изображения, которые будут являться общими для страниц проекта. Чтобы выровнять элементы, используйте «быстрые» направляющие. Чтобы обеспечить максимальную гибкость, структурируйте макет с помощью CSS (см. разделы «Быстрые» направляющие и Создание макетов на основе CSS).

Общее использование элементов на различных страницах

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

Добавление уникальных элементов на отдельные страницы

Добавляйте на страницы уникальные элементы дизайна, навигации и форм. На панели «Общая библиотека» находится множество кнопок, текстовых полей и всплывающих меню, ускоряющих процесс разработки. Составные символы в папках «Компоненты Flex», «HTML», «Mac», «Win», «Интернет и приложение» и «Строки меню» содержат свойства, которые можно настраивать для отдельных экземпляров символов (см. раздел Создание и использование составных символов).

Моделирование пользовательской навигации с помощью ссылок

Установите ссылки на различные страницы прототипа для веб-объектов, таких как фрагменты, активные области или кнопки навигации (см. раздел Ссылки на страницы в документе Fireworks).

Экспорт завершенного интерактивного прототипа

Fireworks поддерживает различные выходные форматы прототипов, все эти форматы позволяют сохранить гипертекстовые ссылки для навигации по страницам. См. следующие статьи.

Дополнительную информацию об обеспечении для клиентов совместного доступа к гибкому прототипу на основе CSS и о продолжении редактирования в программе Adobe Dreamweaver см. в разделе Экспорт макета CSS.

Дополнительную информацию о создании обычных прототипов на основе таблиц см. в разделе Экспорт Fireworks HTML.

Дополнительную информацию о распространении PDF-версии для обсуждения или печати см. в разделе Экспорт файлов Adobe PDF.

Дополнительную информацию о создании прототипа приложения Flex см. в разделе Создание прототипов приложений Flex. Дополнительную информацию о создании приложения Adobe AIR см. в разделе Создание приложения Adobe AIR.

Можно создавать макеты на основе CSS в документе Fireworks, а затем преобразовать их в HTML-страницы с правилами CSS, моделирующими макеты. Макеты на основе CSS обеспечивают стандартизованный подход и поддерживают код, совместимый с различными браузерами.

Сведения о макете страницы CSS

Fireworks предоставляет возможность проектирования страниц и одновременного экспорта их в HTML и CSS-код путем использования механизма экспорта, анализирующего расположение объектов. Кроме того, можно устанавливать выравнивание страницы и задавать повторяющееся фоновое изображение.

Можно использовать элементы HTML, находящиеся в папке HTML панели «Общая библиотека». В папке HTML содержатся такие элементы HTML, как кнопки, объекты выпадающего списка и текстовые поля. Свойства этих элементов можно отредактировать посредством панели «Свойства символа». При перетаскивании любого элемента формы на страницу механизм экспорта вставляет теги <form> во время экспорта макета на основе CSS.

Любой текст, на который помещен фрагмент, отображается как изображение в экспортированном HTML. При необходимости отображения текста как обычного текста используйте компоненты HTML панели «Общая библиотека». Компоненты HTML включают заголовки 1-6 и элементы связи.

Правила создания макетов на основе CSS

Для достижения необходимых результатов при создании макетов на основе CSS следует ознакомиться с несколькими правилами.

Правило 1: Для экспорта текста используйте прямоугольники, для экспорта изображений — фрагменты

Механизм экспорта экспортирует текст, помещенный в прямоугольники. При необходимости экспорта изображений помещайте поверх них фрагменты, поскольку экспортируются только те изображения, на которые наложены прямоугольные фрагменты. Такие фрагменты «сообщают» механизму экспорта о наличии изображений.

Правило 2: Избегайте наложения объектов

Механизм экспорта рассматривает текст, изображения и прямоугольники в виде прямоугольных блоков. Он оценивает размер и расположение этих объектов, чтобы определить логические ряды и столбцы для размещения объектов в макете. Размещайте объекты таким образом, чтобы их границы не пересекались.

Правило 3: Планируйте положение рядов и столбцов

Механизм экспорта ведет поиск логических секций, в которых четко видна граница между объектами или группами объектов. Поместите столбец в прямоугольник, чтобы предотвратить вставку механизмом экспорта логического ряда, нарушающего положение столбца.

Правило 4: Рассматривайте документ как двухмерный

При разработке страницы используйте прямоугольники для помещения объектов, которые необходимо рассматривать как дочерние элементы прямоугольника. Механизм экспорта распознает такие элементы. Он проверяет дочерние элементы на наличие логических рядов и столбцов, как описано в правиле 3.

В дополнение к этим правилам, примите во внимание следующее:

Механизм экспорта экспортирует только примитивные прямоугольники. Для экспорта скругленных углов прямоугольников поместите поверх них прямоугольные фрагменты.

Для экспорта обводки прямоугольников поместите поверх таких прямоугольников прямоугольные фрагменты.

Для экспорта символов поместите поверх них прямоугольные фрагменты.

Для экспорта фильтров, примененных к тексту или прямоугольникам, поместите поверх них прямоугольные фрагменты.

Экспорт макета CSS

Приложение Fireworks позволяет экспортировать макеты, созданные как файлы на основе CSS. Далее можно открыть и редактировать эти файлы в приложении Dreamweaver или другом редакторе, поддерживающем CSS.

После прекращения разработки Flash Player для мобильных устройств и увольнения 750 сотрудников, компания Adobe сообщила ещё одну не очень приятную новость: решено отказаться от дальнейшего развития Flex SDK. После очередного релиза Flex 4.6 SDK, выход которого назначен на 29 ноября, проект будет передан в open source по такому же сценарию, по которому Adobe недавно отдала PhoneGap в организацию Apache Foundation.

Разумеется, пользователей Flex вряд ли может радовать такая перспектива, ведь будущее Flex теперь выглядит весьма туманным. Правда, Adobe уверяет, что проект open source возглавят несколько разработчиков из команды Flex SDK, а также несколько известных представителей сообщества Flex, включая членов проекта Spoon Project. Кроме того, в разработке должны участвовать сотрудники крупных корпораций, которые являются пользователями Flex и не могут никуда мигрировать.

Таким образом, разработка нового функционала для Flex SDK будет продолжаться, а Adobe внесёт в это свой вклад, хотя он будет далеко не таким, как раньше.

Однако, в долговременной перспективе компания Adobe официально рекомендует всем своим клиентам использовать HTML5, а не Flex, для разработки корпоративных приложений, несмотря на то, что прямо сейчас у Flex имеются явные преимущества. Некоторые нынешние ведущие разработчики Flex SDK в компании Adobe будут переведены на направление HTML, а сама компания Adobe планирует участвовать в разработке и некоторых открытых технологий, таких как WebKit, jQuery и PhoneGap, а также создавать новые инструменты в данной области.

План развития Flex, естественно, будет пересмотрен с учётом его перехода в open source. Тот функционал, который планировали внедрить раньше, перенесут в новый план, а сроки пересмотрят. Документ будет составлен сразу после организации руководящей группы нового проекта Flex.

В то же время компания Adobe подчёркивает, что «ликвидация активов» не затронула Flash Builder и его поддержка продолжается.

Flex – это фреймворк для создания RIA и корпоративных приложений. В зависимости от Ваших целей и типа проекта, с помощью Flex могут быть разработаны Web- и десктоп-приложения (с помощью AIR) или их связка.

На данный момент выпущена четвертая версия Flex SDK. Flex 4 включает в себя три языка: MXML, ActionScript и FXG — каждый их них служит для определенных целей. Далее рассматривается каждый из них на примере.

MXML используется для организации пользовательского интерфейса и компонентов, составляющих макет приложения. Значение акронима точно неизвестно, некоторые предполагают, что название произошло от «Maximum eXperience», а другие ­­– «Macromedia XML».

Вот небольшой пример синтаксиса:

Контейнер VGroup содержит два поля для ввода и кнопку, событие «нажатия на кнопку» вызывает функцию ActionScript

ActionScript

ActionScript используется непосредственно для программирования тех или иных действий и событий.

Эта ActionScript функция переносит текст из одного поля ввода в другое.

Flash XML Graphics (FXG)

Это очень удобный подход. Ниже приведенный часть кода на FXG:

В этом коде описывается прямоугольник с заливкой.

Flex – это современный гибридный фреймворк

Flex – это Flash

Flex приложения, как и другой flash-контент, компилируются в SWF файл. Скомпилированные SWF файлы воспроизводит и отображает на экране Flash Player.

С помощью Flex можно создавать приложения малого размера для их быстрой загрузки и запуска на компьютерах с различными операционными системами. Оценить количество компьютеров на которых установлен Flash Player можно по следующей диаграмме:

Распространенность Flash Player

Flex – это Flex SDK

Flex Software Development Kit (SDK) содержит большую библиотеку компонентов пользовательского интерфейса, компилятор и документацию необходимую для разработки.

Несколько слов о AIR

Сейчас AIR поддерживает три платформы: Windows, Mac и Linux. В разработках можно использовать JavaScript и html.

Зачем использовать Flex?

Изначально, Flex разрабатывался для упрощения разработки веб-приложений для Flash плеера. Но сейчас с помощью этого мощного фреймворка можно создавать и настольные приложения.

Использования Flex для создания приложений

Богатая библиотека настраиваемых компонентов сделала Flex хорошим инструментом для относительно быстрой разработки и распространения как веб-, так и десктоп-приложений.

Например, можно реализовать почтовый сервис и клиент к нему для запуска на локальном компьютере. При этом, исходный код не будет сильно изменен. На это способен Flex.

Интерактивность

Flex позволяет создавать по истине интерактивные приложения. Событийная модель и компоненты со встроенными методами позволяют создавать красивые визуальные эффекты.

Быстрая скорость разработки

Flex – это быстрый способ создания интерактивных и стильных (с использованием тем оформления) приложений. Конечно, всего это можно добиться, используя традиционную Flash IDE, но с Flex на это уходит меньше времени, особенно при использовании Flash Builder`а.

Стилизация приложений

Flex поддерживает разделение дизайна и контента приложения, позволяя применять внешние стили. Вы сможете сделать быстрый редизайн приложения или применять темы оформления.

Flex поддерживает паттерн проектирования Model-View-Controller (MVC). Существуют бесплатные библиотеки (Cairngorm, swiz), которые упрощают реализацию MVC.

Открытость

Flex SDK полностью бесплатен. Вы можете писать код в обычном текстовом редакторе и компилировать его из командной строки с помощью консольного компилятора.

Adobe Flex SDK поставляется в исходных кодах. Вы можете изучать и модифицировать исходный код и использовать в своих приложениях. Такой подход дал толчок для развития множества бесплатных расширенных компонентов, которые созданы пользователями это фреймворка. Существуют даже руководства по созданию собственных компонентов.

Обмен данными

Flex имеет встроенную поддержку XML. Он также поддерживает Action Message Format (AMF), что позволяет обмениваться сжатыми двоичными данными по сети с Java или ColdFusion серверами. Есть возможность использования AMFPHP для взаимодействия с серверными php-скриптами.

Для чего не подойдет Flex

Flex не подходит для создания анимации как в Flash IDE с использованием Timeline.

Flex не подойдет для проектов в которых используется много форматированного текста, для них лучше использовать HTML/Ajax

Выводы

На данный момент Flex является наиболее распространенных решением для создания RIA приложений. С Flex, пользовательский интерфейс может быть создан с помощью языка разметки MXML и CSS, а запрограммирован с помощью ActionScript, тем самым, разделив логику приложения с его дизайном. Это упрощает взаимодействие программиста и дизайнера.

Adobe Flex 2.0 – обзор и впечатления

Adobe Flex – это сравнительно новая и весьма продвинутая платформа для разработки тонких Web-приложений, основанная на технологии Adobe Flash. Среда разработки представляет собой бесплатный SDK, плюс плагин Eclipse для визуального редактирования и отладки. Для выполнения кода (как и прежде, содержащегося в .swf-файлах) требуется Flash Player 9.

О технологии Flash

Достоинства

Разработчики Flash до такой степени заботятся о сохранении кроссплатформенности, что намеренно отказываются от поддержки аппаратной акселерации графики, аргументируя это недостаточной совместимостью существующих видеокарт и недопустимостью частичной поддержки акселерации (поскольку Flash-приложение, спроектированное с учётом акселерации, в отсутствии оной будет отрисовываться недопустимо медленно, съедая всё процессорное время).

Размер и лёгкость установки. В то время как Java Runtime Environment (JRE) занимает десятки мегабайт, и часто должен скачиваться и устанавливаться пользователями вручную, Flash Plugin имеет размер 1.5MB, процесс его установки во всех браузерах максимально автоматизирован и не требует от пользователей практически никаких усилий. Разумеется, крохотный по размеру Flash Plugin не может содержать всех возможностей JRE, но для Web-приложений всё это богатство и не нужно. Библиотеки, необходимые конкретному приложению, подключаются к самому приложение, и размер результата получается вполне приемлемым.

Красота. В плане удобного и эффективного процесса создания красивых графических и анимированных интерфейсов у Flash конкурентов нет.

Распространённость. Вследствие всего вышеперечисленного, Flash Plugin установлен на компьютерах подавляющего большинства пользователей.

Недостатки

Все предыдущие версии Flash, по восьмую включительно, тащили на себе весь груз обратной совместимости , что, по моему опыту, делало разработку сложных систем на Flash малоприятным занятием. С выходом Flash Player 9 ситуация кардинально поменялась в лучшую сторону, но об этом ниже.

Количество сторонних библиотек (в частности, open-source) на порядки меньше, чем в той же Java. Те библиотеки, что я видел, в большинстве своём представляли собой визуальные компоненты и фреймворки, с массой ошибок, и в основном, являющиеся альтернативой стандартным компонентам Flash 8 Pro. Но для тонкого Web-клиента никаких особенных библиотек и не требуется.

Многие отмечают проблемы с удобством использования , а именно отсутствие поддержки многокнопочных мышей и наличие неудаляемых пунктов в контекстных меню. Насколько я успел заметить, middle click так до сих пор и не распознаётся (если быть точным, все мышиные кнопки делятся на «главную» и «любую другую»).

Новое в Flash Player 9

Основа всех возможностей Flex – это новый Flash Player. В нём реализована совершенно новая виртуальная машина AVM2, поддерживающая новую версию языка ActionScript – 3.0, а также новый реструктурированный и расширенный API.

Кроме того, AVM2 оптимизирована по скорости. Заявлено, что скорость работы AVM2 в десять раз выше скорости AVM1. Что именно измерялось – вычисления или рендеринг графики, лично мне не известно.

Новое в ActionScript 3.0 (AS3)

Улучшенная обработка ошибок. Предыдущие версии Flash Player молча обрабатывали такие случаи, как обращение к несуществующим свойствам или к свойствам null-объекта, возвращая undefined. Зачастую это было удобно с точки зрения компактности кода, но крайне проблематично с точки зрения отладки. Flash Player 9 генерирует исключение при любой ошибке, при этом неперехваченное исключение показывается пользователю в отдельном окне.

Проверка типов во время исполнения. В ActionScript 2 (AS2) указания типов переменных служили исключительно подсказками программисту и компилятору. Если в процессе компиляции обнаруживалось несоответствие типов, компилятор генерировал ошибку, но в результирующий .swf-файл никакой информации о типах не помещалось. Теперь такая информация помещается в результирующий файл, и AVM2 использует ее для проверки типов во время выполнения, генерируя исключение в случае несоответствия типов. Если же информация о типах в исходном тексте не указана (как например, при работе с Object или XML), используется динамическая типизация, аналогичная предыдущим версиям Flash.

Добавились новые элементарные типы данных, такие как int, uint. Раньше был только один универсальный тип Number – он также остался в AS3. Кроме того, изменились значения по умолчанию для не инициализированных переменных. В частности, для объектов (в т.ч. String) используется null, для int и uint – 0; значение undefined используется только с переменными необъявленного типа.

Улучшенная объектная модель. Поддержка модификатора protected, и некоторых других спецификаторов.

"Запечатанные" (sealed) классы.

В ActionScript 3.0 появилась концепция sealed-классов. Такой класс имеет только фиксированный набор свойств и методов, который не подлежит расширению во время исполнения. Это позволяет усилить контроль со стороны компилятора, тем самым оберегая программиста от случайных ошибок. По умолчанию классы являются запечатанными. Для поддержки динамических свойств и методов необходимо использовать ключевое слово dynamic в объявлении класса.

Замыкания методов. Указатель на метод (тип Function) теперь содержит в себе указатель на его объект. Раньше приходилось использовать вспомогательный класс Delegate или же извращаться другими способами.

Регулярные выражения , в соответствии со стандартом ECMA-262 (т.е. полностью аналогично JavaScript).

Удобная работа с XML в соответствии со стандартом ECMAScript for XML (E4X). Несколько примеров скажут сами за себя:

При работе с XML используется автоматическое приведение типов. В приведенном примере, в строках (1) и (3) целочисленным переменным присваиваются значения XML-элементов и атрибутов, без явного преобразования типов. Также XMLList, содержащий один элемент, может быть приведён к XML (часть выражения слева от balance в строке (6)). Однако в строках (4) и (5) возникает исключение при попытке привести двухэлементный XMLList к XML.

Новое в Flash Player 9 API

Улучшена работа с деревом визуальных объектов . Прошлые извращения createEmptyMovieClip(), createTextField(), attachMovie(), removeMovieClip(), removeTextField() канули в лету. Сейчас всё выглядит очень удобно и похоже на DOM, например:

В предыдущих версиях Flash Player API обработка событий производилась путем подмены метода-обработчика события. Такая подмена могла быть произведена или путем создания наследника класса, содержащего новый вариант метода, или динамической заменой метода у конкретного объекта. В новой версии для обработки событий используется DOM3 Event Model, т.е. методы addEventListener() и removeEventListener(). Это позволяет добавлять более одного обработчика событий для одного события.

Классы LoaderInfo (используемый загрузчиком .swf-файлов и файлов изображений) и URLLoader (загрузчик текстовых и двоичных данных) теперь используют DOM3 Event Model и одинаковый набор событий для оповещения о состоянии процесса загрузки.

ПРИМЕЧАНИЕ

Улучшена работа с текстом. Все соответствующие API вынесены в пакет flash.text. Класс TextLineMetrics позволяет рассчитывать метрики текста. В классе TextField появилось несколько новых методов: getCharBoundaries() и getCharIndexAtPoint() для перевода индекса символов в пиксельные координаты и обратно; getFirstCharInParagraph(), getParagraphLength(), getLineLength(), getLineText(), getLineIndexOfChar() для работы со структурой текста. Новый класс Font предназначен для работы со шрифтами, внедрёнными в .swf-файл.

Обзор Flex

Целевое назначение, основные отличия от Flash

Несмотря на то, что в качестве платформы Flex использует Flash Player, с точки зрения разработчика Flash CS3 и Flex 2 имеют мало общего. Общие у них только ActionScript 3.0 и Flash Player 9 API.

Flash заточен под мультимедийную разработку, под сложный графический дизайн и анимацию. Flash хорош для презентационных сайтов типа онлайн-казино, где всё должно крутиться, вертеться, мелькать и звенеть.

Flex заточен под разработку rich internet applications, под визуализацию и обработку данных. Я бы рискнул сравнить его с Delphi: тот же стандартный набор компонентов, включая data-aware, для быстрого построения пользовательских интерфейсов.

ПРИМЕЧАНИЕ

Недавно вышедший Flash CS3 я ещё не видел, поэтому всюду, где я ссылаюсь на Flash, я имею в виду Flash 8 Pro. Возможно, некоторые мои сравнения с выходом Flash CS3 потеряли смысл. Заранее прошу прощения за возможные несоответствия.

Flex не предоставляет таких средств, как рисование векторных изображений и анимации. Предполагается, что при необходимости использования .swf-анимаций в качестве элементов оформления, разработчик импортирует готовые анимации из Flash. Однако в Flex предусмотрен набор стандартных эффектов, таких как движение, размывание, изменение цвета или альфа-канала и т.п. Также имеются средства группировки эффектов, с параллельным или последовательным выполнением, с возможностью вложения групп. Эффекты удобно использовать, например, для анимации выпадающих меню.

ПРИМЕЧАНИЕ

Разумеется, вы можете рисовать векторные изображения программно (а также программно отображать внедрённые в .swf-файл или динамически загружаемые растровые изображения). Но этот подход эффективен в очень ограниченном количестве случаев.

Как следствие, на уровне исходных текстов Flex отсутствует понятие «timeline». Вместо этого в визуальном редакторе имеется возможность задавать состояния объекта. Для каждого состояния указывается, какие объекты нужно добавить или удалить, а также какие свойства объектов изменить – по сравнению с базовым состоянием.

ПРИМЕЧАНИЕ

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

Формат исходных файлов

Файлы MXML

В этом примере атрибуты кнопки horizontalCenter и verticalCenter указывают смещение в пикселях относительно центра родительского объекта (в данном случае кнопка строго центрирована в рабочей области приложения). Третий параметр метода Alert.show() является необязательным; я добавил его в качестве намёка, что Alert – это полноценный message box с возможностью настройки набора отображаемых кнопок и обработки ответа пользователя.

На самом деле каждый mxml-файл представляет собой класс. Корневой элемент задаёт имя базового класса, в вышеприведенном примере это mx.core.Application. Функции, объявленные внутри элемента <mx:Script>, являются методами. Flex обрабатывает mxml-классы и ActionScript-классы практически одинаковым образом, то есть позволяет организовывать их в пакеты, наследовать и создавать их экземпляры.

Файлы ActionScript

Аналогично Flash, вы можете создавать свои классы на языке ActionScript, организуя их в пакеты. Структура каталогов в дереве исходных файлов проекта должна отражать структуру пакетов. Например, я унаследовал класс dimgel.HtmlEditor от mx.controls.RichTextEditor, ограничив количество доступных пользователю кнопок:

Импорт

Для импорта классов в ActionScript-код используется оператор import, как показано в примере выше. Для импорта компонентов в mxml-файл используются пространства имён XML. Например, после того, как я перетащил мышью компонент dimgel.HtmlEditor из панели компонентов в визуальный редактор приложения, mxml-файл стал выглядеть так:

Создание своих компонент (восторг, часть первая)

По сравнению с Flash 8, процедура создания компонентов стала удобнее и проще на порядки. Никаких компиляций в .swc и копирований в специальные каталоги. В Flex компонент – это просто класс (ActionScript или mxml-файл) в дереве проекта, являющийся подклассом одного из стандартных визуальных компонентов. Например, чтобы создать подкласс dimgel.RedLabel класса mx.controls.Label, отображающий текст красным цветом, можно использовать два способа:

Обратите внимание, что имя компонента, описанного в XML, определяется именем файла, в который он помещается – прим.ред.

Способы использования нового класса не зависят от способа его создания. Вы можете создавать наследников класса, также с помощью ActionScript или MXML, или создавать экземпляры класса, следующими равнозначными способами:

Единственное отличие между описанными способами создания класса компонента заключается в том, что визуальный дизайнер не подхватывает логику, прописанную в ActionScript-коде. Например, компонент RedLabel, созданный с помощью ActionScript, в визуальном дизайнере будет отображаться чёрным. Но в откомпилированной программе различий не будет.

ПРИМЕЧАНИЕ

Layouts

Возможности абсолютного позиционирования визуальных компонентов внутри визуальных контейнеров намеренно ограничены. Вместо абсолютного позиционирования рекомендуется использовать специальные компоненты – layout-контейнеры. Например, чтобы расположить кнопки на панели инструментов горизонтально друг за дружкой, можно использовать компонент HBox:

Аналогично, имеются контейнеры для выстраивания дочерних компонентов вертикально (VBox), в сетку (Grid, Tile) и т. д., а также масса вспомогательных компонентов (Spacer, HRule, VRule и т.д.). Можно указывать размер компонентов, находящихся внутри layout-контейнеров, но нельзя указать их координаты, поскольку объекты позиционируются контейнером автоматически. Единственный layout-контейнер, допускающий абсолютное позиционирование компонентов, - это Canvas (который также является рабочей областью компонентов Panel, TitleWindow, ViewStack и т.п.).

Пример исходного кода диалога, внизу-посередине которого находятся две кнопки (“OK” и “Cancel”), а всю остальную область занимает текстовое поле:

Настройка стандартных компонентов (восторг, часть вторая)

Кто программировал на Delphi или Flash 8, тот помнит, в какую головную боль выливались попытки раскрасить строки DataGrid в разные цвета, или назначить им разные шрифты в зависимости от находящихся в них данных, не говоря уже о чём-либо более сложном. В Flex эта проблема решена через использование Item Renderers и Item Editors. Списки, комбобоксы, столбцы таблиц и т.д. – очень многие компоненты позволяют замещать свои стандартные рендереры. При этом на пользовательский рендерер не налагается практически никаких ограничений – это может быть любой компонент произвольного (в том числе динамического) размера, содержащий в себе другие компоненты, подгружаемые или внедрённые картинки, сложный layout и т.д.

В этом примере, в числе прочего, демонстрируется объявление анонимного компонента (itemEditor) по месту. Для разграничения областей видимости (scope) используется специальный элемент <mx:Component>, внутри которого содержится объявление анонимного класса-рендерера (в нашем примере – подкласса NumericStepper). Экземпляр этого класса назначается свойству itemEditor объекта DataGridColumn (тип свойства – IFactory, генератор классов). Альтернативой является создание компонента-подкласса класса NumericStepper и указание его имени в свойстве itemEditor:

Подобный стиль объявлений "по месту" интенсивно используется для инициализации свойств компонентов, в том числе свойств-коллекций. В вышеприведённом примере свойство DataGrid.columns является коллекцией объектов DataGridColumn. Аналогичный стиль может использоваться, например, для инициализации списка элементов ComboBox и т.д.

Экземпляры рендереров кэшируются и используются повторно. Поэтому рендерер должен обрабатывать событие dataChange, чтобы обновлять и перерисовывать себя. Свойство data является частью интерфейса IDataRenderer, который реализует компонент mx.controls.Text, используемый здесь в качестве базового класса. Пример использования рендерера, описанного в файле ObjectRemarkRenderer.mxml, приведён ниже:

Свойство DataGrid.variableRowHeight уставлено в true, в противном случае высота всех строк таблицы устанавливается одинаковой, равной максимальной высоте содержащихся в строках данных (в нашем случае – максимальной высоте HTML-текста, отображаемого рендерером).

Отладка

Выводы

Появление Flash Player 9 ознаменовало давно ожидаемый качественный скачок Flash как платформы для разработки сложных Web-приложений. Освободившись от груза обратной совместимости, новый Flash вобрал в себя богатый опыт прошлого и стал действительно удобным для разработчиков.

Flex , сфокусировавшись на разработке Web-приложений, предоставляет сбалансированный инструментарий, скрывает несущественные с точки зрения разработчика детали функционирования Flash Player, заменяя их высокоуровневыми абстракциями. Библиотека классов и выразительные возможности Flex чрезвычайно продуманы, способны обеспечить высокую эффективность разработки. А богатство возможностей Flash, удобство использования и переносимость сгенерированного кода вполне могут позволить ему конкурировать с AJAX.

Читайте также: