Статьи

Создание списка контактов на основе XML с помощью Flex 3

Цель этого руководства — создать список контактов, который динамически загружается из внешнего XML-файла. Когда пользователь выбирает другой контакт, данные автоматически обновляются для правильного отображения. Мы также будем применять некоторые базовые изменения стилей к результатам и придать проекту более индивидуальный подход.




Давайте посмотрим на скриншот окончательного результата, к которому мы будем стремиться:

Полный список контактов

Примечание. Как вы скоро поймете, я не использую SDK для создания файлов Flex 3. Хотя это руководство преподается с точки зрения Flex 3 Builder, основной код остается тем же. Пользователи SDK, вам просто нужно будет заменить шаги по мере необходимости. Я не буду использовать представление дизайна в этом уроке, так что вам повезло.

Flex — отличная платформа для разработки. Лучше, когда у вас есть полный Flex 3 Builder . К счастью для подходящих студентов и преподавателей, Adobe предлагает вам полную лицензию Education Flex 3 Builder бесплатно

Считайте это дружеским напоминанием. Если кто-то, имеющий образовательные связи, еще не воспользовался соглашением « Free Flex 3 for Education », сделайте это сейчас. Это вам очень поможет.

Теперь, когда мы завершили евангелизацию «бесплатного продукта Adobe», давайте создадим приложение Flex!

Начните с создания нового проекта Flex для Интернета. Назовите его как хотите, этот шаг не повлияет на результаты.

В рамках проекта запустите новое приложение MXML (Файл> Создать> Приложение MXML). Назовите файл «contactManager».

Настройка макета

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

Каждый контакт будет отображать изображение профиля при выборе. Для этого примера мы будем использовать Билла Гейтса и Барака Обаму в качестве контактов. Пресс-фото Стива Джобса было просто ужасно

Фотографии профиля контакта

Я обрезал их фотографии для прессы (полученные здесь и здесь ) до меньших размеров для этого урока. Возьмите отредактированные версии здесь , и мы перейдем к XML-файлу.

Вся отображаемая информация будет извлечена из внешнего XML-файла. Основная структура выглядит следующим образом:

Как видите, для каждой записи есть четыре основных поля. Имя контакта, его должность, адрес электронной почты и URL-адрес изображения профиля.

Загрузите файл , и мы будем готовы разместить все файлы, которые вы загрузили, в папки ресурсов для Flex.

Убедитесь, что файлы вашего проекта расположены так, как показано на рисунке ниже. Вам потребуется создать папку «assets» для user-data.xml и папку «images» для снимков профиля («Файл»> «Создать»> «Папка» с выбранной папкой «src»).

Импортируйте файлы, загруженные на шаге 4 и 5, в соответствующие папки. Выбрав целевую папку, выберите «Файл»> «Импорт»> «Другой» и используйте подсказку для выбора файла. Промойте и повторите для каждого, пока вы не получите все три на месте.

каталог

Во Flex MXML внешние файлы чаще всего загружаются с помощью тега HTTPService. Думайте об этом как о подготовке конверта к почте. Он содержит целевой пункт назначения и содержит инструкции о том, что делать с содержимым.

Создайте тег HTTPService для запроса нашего XML-файла, введя следующий тег непосредственно под открывающим тегом приложения.

Этот HTTPService имеет идентификатор «userData» и загружает наш XML-файл пользовательских данных. Полученные данные отформатированы как E4X и переданы функции contentHandler, которую мы вскоре сделаем для обработки.

Однако обратите внимание, потому что простое создание тега HTTPService не отправляет запрос . Так же, как конверт нуждается в почтовом ящике для путешествий, запрос HTTPService должен быть фактически отправлен.

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

Хотя мы могли бы просто вставить сюда метод userData.send (), мы собираемся использовать более расширяемую функцию init () для отправки запроса. Эта функция будет отвечать за действия, выполняемые после загрузки проекта Flex, и открывает возможность для нескольких событий загрузки. Мы заполним содержимое этой функции на следующем шаге.

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

Помните, что Flex — это фреймворк для ActionScript , очень похожий на jQuery для JavaScript. Это означает, что, хотя теги Flex предназначены для упрощения использования сценариев ActionScript, они также могут обрабатывать и прямые сценарии. Для этого нам понадобится указать область для сценариев.

И здесь вступает в игру тег Script. Вставьте тег прямо под открывающим тегом приложения. Это где весь actionScript будет написан; хранится отдельно от MXML ниже. Если вы находитесь в Builder, тег автоматически добавит разметку CDATA:

Начнем с импорта пакета ResultEvent, необходимого для тега HTTPService. (Помните, что весь код в этом разделе находится между тегами скрипта, упомянутыми выше)

Чтобы построить фильтры XML, нам нужно определить некоторые переменные. Оба они должны быть определены как связываемые, что позволяет напрямую связать содержимое с компонентом Flex (например, с меткой).

XML-список userList будет содержать результаты в формате E4X из загруженного XML-файла. Мы будем использовать его для заполнения компонента сетки данных на следующем этапе.

XML-переменная selectedData будет содержать выбранный в данный момент результат в компоненте сетки данных. Он будет отвечать за заполнение информационных полей и изображения профиля.

Функция init (), на которую мы ссылались на последнем шаге, будет делать две вещи.

  1. Отправьте запрос на XML-файл пользовательских данных.
  2. Установите для метки имени (еще не созданной) текст по умолчанию «Контакт не выбран»

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

Следующая функция — это contentHandler, вызываемый событием результата тега HTTPService. Эта функция принимает переданное событие, а затем назначает переменной XML List userList результирующие данные XML, отфильтрованные на уровне «пользователя».

Последняя функция (showProfile) активируется, когда имя выбирается из списка контактов. Он просто присваивает содержимое текущей выбранной записи XML переменной selectedData. Это переменная, которая будет привязана к меткам и контейнерам изображений для живых обновлений.

Теперь, когда ActionScript готов, мы готовы собрать дизайн.

Макет списка контактов будет состоять из серии контейнеров HBox и VBox (горизонтальный и вертикальный соответственно). Блок ниже иллюстрирует структуру окончательного проекта.

Блочная компоновка

Весь этот контент, который мы загрузили, будет нуждаться в доме. Вот где компоненты макета входят. Вставьте следующую структуру под тегом HTTPService.

Преимущество MXML в том, что он относительно прост для чтения. Единственный компонент, который может отбросить кого-то новичка в Flex — это Data Grid. По сути, сетка данных представляет собой таблицу. Тег столбцов между тегом DataGrid определяет текст заголовка и поля для отдельных столбцов.

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

Извлечение данных из записей XML удивительно просто. Скопируйте в следующий код изменения и встретитесь ниже для сводки.

Вот разбивка того, что происходит:

  1. Сетка данных заполняется связыванием с ней XML-списка userList. Столбец загружает поле данных «имя» из каждой записи.
  2. Когда выбранный элемент в сетке данных изменяется, он вызывает функцию showProfile для обновления XML selectedData.
  3. Каждая метка настроена для отображения поля выбранной записи.
  4. В правом столбце источник контейнеров изображений загружается из URL-адреса в файле XML.

Если вы поработаете с Flex некоторое время, легко устать от стандартной цветовой схемы. Давайте сделаем несколько быстрых исправлений, чтобы оживить ситуацию.

Мы начнем с изменения фона на градиент черного цвета. Обновите свой открывающий тег приложения, чтобы включить свойства градиента ниже:

Недостатком черного фона является то, что текст по умолчанию не будет виден. Мы исправим это, используя CSS Flex для изменения цвета шрифта.

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

CSS, предлагаемый во Flex, ограничен, но мы все еще можем вносить эффективные визуальные изменения. В CSS ниже я поменял все метки на белый шрифт для удобства чтения. HBox, содержащий все, получил черный фон и отступы 20px с каждой стороны для расстояния.

* Обратите внимание, что вы должны использовать имена компонентов в CSS, чтобы правильно ссылаться на них.

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

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

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

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

Идите вперед и экспериментируйте! Если у вас появятся какие-нибудь классные дополнения, обязательно поделитесь ими с нами в комментариях.

Полный список контактов