Звоните: (067) 644-70-74
Напишите нам burtrest@gmail.com

Книга Flex 4 в действии. Ахмед

390.00 грн.

Артикул: c7ccfb081f25 Категория:

Описание

год-2012

752 страницы

Adobe Flex — технология создания веб-приложений с широкими возможностями. С выходом Flex 4 создатели получили в свое распоряжение новые компоненты интерфейса пользователя, более совершенный механизм мониторинга производительности и более быстрый компилятор. Эта книга Flex 4 в действии. Ахмед представляет собою исчерпывающее руководство, при помощи которого веб-дизайнеры и создатели могут исследовать Flex. Издание начинается с рассмотрения основ — форм и данных, — затем нужно материал, касающийся ключевых концепций: навигации, перетаскивания элементов с помощью мыши, событий. Если вы не знакомы с Flex, то эта книга — все, что вам понадобится, чтоб научиться делать Flex-приложения с использованием новых компонентов Spark, служб данных, диаграмм, специальных эффектов и многого иного. В этой книжке рассмотрены следующие тематики: ¦ создание своих приложений; ¦ применение диаграмм для разработки интерактивных информационных панелей; ¦ увеличение производительности приложений при помощи эксплуатации инструментария для сетевого мониторинга и проведения модульного тестирования; ¦ придание приложениям уникального внешнего вида с помощью тем и скинов.
Оглавление книги
Книга Flex 4 в действии. Ахмед
Предисловие к первому изданию .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 24
Предисловие .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 27
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
О книге .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 32
Краткое содержание глав .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 33
Загрузка образов программного кода и используемые
в книге соглашения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 36
Об авторах .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 36
О названии книги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Об иллюстрации на обложке книги .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 39
От издательства .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 41
Часть I. Основы создания приложений
Глава 1. Вводный этап . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1 .1 . Почему существует так много веб-приложений? .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 44
1 .2 . Содержательные интернет-приложения как решение  .  .  .  .  .  .  .  .  .  .  .  . 47
1 .2 .1 . Это нужно всем .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 47
1 .2 .2 . Содержательные интернет-приложения приходят
на помощь .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 47
1 .2 .3 . Как содержательные интернет-приложения позволяют
добиваться таких результатов . . . . . . . . . . . . . . . . . . . . . . . . . 49
1 .3 . Конкуренты содержательных интернет-приложений . . . . . . . . . . . . . 49
1 .3 .1 . Технология Flex от компании Adobe .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 50
1 .3 .2 . Технология Silverlight от компании Microsoft  . . . . . . . . . . . . 51
1 .3 .3 . Технология JavaFX от компании Sun Microsystems . . . . . . . . 52
1 .3 .4 . Технология AJAX — последний конкурент . . . . . . . . . . . . . . 52
1 .4 . Знакомство с Flex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1 .4 .1 . Использование преимуществ Adobe Flash .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 56
1 .4 .2 . Совместимость Flex и JavaScript .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 57
1 .4 .3 . Экосистема Flex .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 57
1 .5 . Как работает Flex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1 .5 .1 . Языки, поддерживаемые Flex  . . . . . . . . . . . . . . . . . . . . . . . 61
1 .5 .2 . События, события, события .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 63
1 .5 .3 . Ограничения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 64
1 .6 . Что нового появилось в Flex 4 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 65
1 .7 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 67
Глава 2. Приступаем к работе .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 69
2 .1 . Flex «по дешевке» .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 69
2 .1 .1 . Конфигурирование среды компилирования . . . . . . . . . . . . . 70
2 .1 .2 . Конфигурирование среды редактирования  . . . . . . . . . . . . . 72
2 .1 .3 . Последующие шаги (если вам еще интересно) .  .  .  .  .  .  .  .  .  .  . 73
2 .2 . Знакомимся с Flash Builder .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 74
2 .2 .1 . Программные продукты и ценовая политика . . . . . . . . . . . . 75
2 .2 .2 . Загрузка и установка Flash Builder . . . . . . . . . . . . . . . . . . . . 76
2 .3 . Исследуем Flash Builder .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 76
2 .4 . Представления и перспективы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2 .4 .1 . Встроенные перспективы  . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2 .4 .2 . Переключение между перспективами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 79
2 .4 .3 . Конфигурирование перспектив . . . . . . . . . . . . . . . . . . . . . . 80
2 .5 . Наш первый проект — Hello World! .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 81
2 .5 .1 . Создаем проект .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 82
2 .5 .2 . Печатаем код .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 84
2 .5 .3 . Компилирование и запуск . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2 .5 .4 . Добавляем реальную функциональность . . . . . . . . . . . . . . . 85
2 .6 . Использование режима Design .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 85
2 .7 . Встроенный справочник API Reference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 87
2 .7 .1 . Объектно-ориентированные языки и их справочники
API Reference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 88
2 .7 .2 . Как получить доступ к справочнику API Reference . . . . . . . . 88
2 .7 .3 . Чтение справочника API Reference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 90
2 .8 . Кратко о MXML и ActionScript .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 92
2 .8 .1 . Структура MXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
2 .8 .2 . Взаимоотношения MXML с ActionScript .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 93
2 .8 .3 . ActionScript отвечает за обработку событий .  .  .  .  .  .  .  .  .  .  .  .  . 94
2 .9 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 97
Глава 3. Работа с ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3 .1 . Комментарии  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 99
3 .1 .1 . Встроенные комментарии .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 100
3 .1 .2 . Блочные комментарии .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 100
3 .2 . Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3 .2 .1 . Имена переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3 .2 .2 . Строгая типизация данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 101
3 .2 .3 . Статическая и динамическая проверка типа .  .  .  .  .  .  .  .  .  .  . 101
3 .2 .4 . Классы верхнего уровня . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3 .2 .5 . Специальные типы данных . . . . . . . . . . . . . . . . . . . . . . . . 103
3 .3 . Циклы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 103
3 .3 .1 . For (начальное значение; соответствующее условие;
инкремент) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3 .3 .2 . For (имена свойств в массиве/объекте) . . . . . . . . . . . . . . . 104
3 .3 .3 . For each (элемент в массиве/объекте) . . . . . . . . . . . . . . . . 105
3 .3 .4 . While (условие) .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 106
3 .3 .5 . Do while (условие) .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 106
3 .4 . Условные операторы (операторы if и switch) . . . . . . . . . . . . . . . . . . 107
3 .4 .1 . If . .else .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 107
3 .4 .2 . Switch .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 109
3 .5 . Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3 .5 .1 . Индексированные массивы . . . . . . . . . . . . . . . . . . . . . . . . 111
3 .5 .2 . Ассоциативные массивы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 113
3 .6 . Аспекты, касающиеся ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3 .6 .1 . Скобки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 115
3 .6 .2 . Логические операторы и сокращения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 116
3 .7 . Взгляд на функции, классы и пакеты .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 118
3 .7 .1 . Ваши собственные функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 119
3 .7 .2 . Отделение ActionScript-кода и размещение его
в обособленных файлах .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 123
3 .8 . Простая привязка данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3 .8 .1 . Жизнь без привязки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 124
3 .8 .2 . Добавление привязки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3 .8 .3 . Тег . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
3 .8 .4 . Делаем переменные ActionScript привязываемыми .  .  .  .  .  .  . 126
3 .9 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 128
Глава 4. Макет и контейнеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4 .1 . Сравнение Spark и Halo (MX) .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 129
4 .2 . Макет, предусматривающий абсолютное позиционирование . . . . . . 131
4 .3 . Макет на основе ограничений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 134
4 .3 .1 . Базовые ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4 .3 .2 . Дополнительные ограничения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 137
4 .4 . Макет, предусматривающий автоматическое позиционирование . . . 144
4 .4 .1 . Использование классов макетов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 144
4 .4 .2 . Установление промежутков .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 146
4 .5 . Установление переменных и фиксированных размеров . . . . . . . . . . 147
4 .5 .1 . Установление переменных размеров . . . . . . . . . . . . . . . . . 147
4 .5 .2 . Установление фиксированных размеров .  .  .  .  .  .  .  .  .  .  .  .  .  . 148
4 .6 . Контейнеры .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 148
4 .6 .1 . Контейнер Application .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 149
4 .6 .2 . Контейнер Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4 .6 .3 . Контейнеры Group и SkinnableContainer . . . . . . . . . . . . . . . 151
4 .6 .4 . Контейнер Panel .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 153
4 .6 .5 . Контейнер ApplicationControlBar .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 154
4 .6 .6 . Контейнеры DataGroup и SkinnableDataContainer . . . . . . . . 156
4 .6 .7 . Контейнеры DividedBox, HDividedBox и VDividedBox .  .  .  .  .  . 158
4 .6 .8 . Контейнер Form .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 160
4 .6 .9 . Контейнер Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4 .7 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 162
Глава 5. Отображение форм и захват вводимых
пользователем данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5 .1 . Атрибут id .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 164
5 .2 . Каталог элементов управления Flex .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 165
5 .2 .1 . Текстовые элементы управления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 165
5 .2 .2 . Date-элементы управления . . . . . . . . . . . . . . . . . . . . . . . . 169
5 .2 .3 . Элементы управления для захвата числовых значений .  .  . 171
5 .2 .4 . Обзор кнопок Flex .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 174
5 .2 .5 . Элементы управления со списками выбора . . . . . . . . . . . . 180
5 .3 . Доступ к значению элемента управления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 183
5 .3 .1 . Передача значений функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 183
5 .3 .2 . Передача событий функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 18
5 .3 .3 . Прямой доступ к свойствам .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 186
5 .3 .4 . Какой подход следует предпочесть . . . . . . . . . . . . . . . . . . 187
5 .4 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 188
Глава 6. Проверка вводимых пользователем данных . . . . . . . . . . 189
6 .1 . Обзор способов проверки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
6 .2 . Встроенные валидаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
6 .2 .1 . Компонент Validator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 191
6 .2 .2 . StringValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6 .2 .3 . NumberValidator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 194
6 .2 .4 . DateValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
6 .2 .5 . EmailValidator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 197
6 .2 .6 . CreditCardValidator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 199
6 .2 .7 . CurrencyValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
6 .2 .8 . PhoneNumberValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6 .2 .9 . RegExpValidator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
6 .2 .10 . SocialSecurityValidator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 205
6 .2 .11 . ZipCodeValidator .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 206
6 .3 . Проверка в реальном времени  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
6 .4 . Проверка при фиксации значения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 208
6 .5 . Сквозная проверка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6 .6 . Сценарная проверка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6 .7 . Аспекты, касающиеся проверки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 210
6 .7 .1 . Всегда ли валидатор проверяет соответствие
всем критериям? .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 211
6 .7 .2 . Контроль над тем, что инициирует проверку . . . . . . . . . . . 211
6 .8 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 212
Глава 7. Форматирование данных . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
7 .1 . Встроенные форматеры .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 214
7 .1 .1 . Formatter .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 214
7 .1 .2 . NumberFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
7 .1 .3 . CurrencyFormatter .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 217
7 .1 .4 . DateFormatter .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 218
7 .1 .5 . PhoneFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
7 .1 .6 . ZipCodeFormatter .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 223
7 .1 .7 . SwitchSymbolFormatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7 .2 . Форматирование в реальном времени . . . . . . . . . . . . . . . . . . . . . . . 226
7 .3 . Сценарное форматирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
7 .3 .1 . Использование функции в сочетании с компонентом
в виде форматера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
7 .3 .2 . Использование функции в сочетании
с классом форматера .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 228
7 .4 . Выявление ошибок форматирования с целью
их последующего устранения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 230
7 .5 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 231
Глава 8. MX-компоненты DataGrid, List и Tree . . . . . . . . . . . . . . . . . 232
8 .1 . Генеалогия основанных на списке компонентов MX .  .  .  .  .  .  .  .  .  .  .  .  . 232
8 .1 .1 . Свойства, поддерживаемые ListBase и AdvancedListBase .  .  . 233
8 .1 .2 . События, поддерживаемые MX-компонентом ListBase .  .  .  .  . 235
8 .2 . Понятие коллекций и dataProvider .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 235
8 .2 .1 . Заполнение dataProvider . . . . . . . . . . . . . . . . . . . . . . . . . . 236
8 .2 .2 . Типы коллекций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
8 .2 .3 . Компоненты, использующие коллекции .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 237
8 .3 . Инициализация коллекций .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 237
8 .4 . Заполнение коллекций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
8 .4 .1 . List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
8 .4 .2 . HorizontalList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
8 .4 .3 . TileList .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 243
8 .4 .4 . DataGrid .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 246
8 .4 .5 . Tree  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
8 .5 . Взаимодействие с основанными на списке компонентами MX .  .  .  .  .  . 253
8 .5 .1 . События, связанные с основанными
на списке компонентами . . . . . . . . . . . . . . . . . . . . . . . . . . 253
8 .5 .2 . Передача события функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 254
8 .5 .3 . Передача данных функции .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 256
8 .5 .4 . Прямой доступ к выбранной строке .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 257
8 .5 .5 . Привязка к выбранной строке . . . . . . . . . . . . . . . . . . . . . . 257
8 .6 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 258
Глава 9. Использование основанных на списке элементов
управления Spark .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 259
9 .1 . Генеалогия основанных на списке компонентов Spark . . . . . . . . . . . 260
9 .1 .1 . Идентификация соответствующего компонента
с использованием пространств имен . . . . . . . . . . . . . . . . . 26
9 .1 .2 . Рендереры элементов и основанные
на списке компоненты Spark . . . . . . . . . . . . . . . . . . . . . . . 261
9 .2 . Основанные на списке элементы управления Spark .  .  .  .  .  .  .  .  .  .  .  .  . 261
9 .2 .1 . Элемент управления ButtonBar .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 262
9 .2 .2 . Spark-элемент управления List .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 263
9 .2 .3 . Элемент управления DropDownList  . . . . . . . . . . . . . . . . . . 264
9 .3 . Взаимодействие с основанными на списке компонентами Spark .  .  .  . 266
9 .3 .1 . Отправка событий по умолчанию при выборе элемента .  .  . 266
9 .3 .2 . Объект IndexChangedEvent .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 267
9 .4 . Понятие архитектуры основанных на списке компонентов Spark,
поддерживаемых версией Flex 4 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 267
9 .4 .1 . Иерархия классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
9 .4 .2 . Новые Spark-классы для основанных на списке
элементов управления  . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9 .5 . Создание пользовательских основанных на списке компонентов
на базе архитектуры Spark .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 270
9 .5 .1 . Понятие классов Group и SkinnableContainer . . . . . . . . . . . . 270
9 .5 .2 . Создание пользовательского основанного
на списке компонента Spark на базе класса List . . . . . . . . . 271
9 .6 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 274
Глава 10. Конфигурирование основанных
на списке компонентов Spark .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 275
10 .1 . Конфигурирование отображения данных .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 275
10 .1 .1 . Свойство labelField .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 276
10 .1 .2 . Функции метки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 276
10 .1 .3 . Типы функций метки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 278
10 .1 .4 . Использование функций метки, предназначенных
для многостолбцовых основанных
на списке компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . 279
10 .1 .5 . Для чего могут применяться функции метки .  .  .  .  .  .  .  .  .  . 282
10 .1 .6 . Более общая картина  . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
10 .2 . Рендереры элементов (средства визуализации элементов) .  .  .  .  .  .  . 283
10 .2 .1 . Spark-рендереры элементов MXML .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 283
10 .2 .2 . Spark-рендереры элементов MXML
с использованием компонентов MX .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 285
10 .2 .3 . Создание встроенного рендерера элементов . . . . . . . . . . 289
10 .2 .4 . Использование вставных рендереров элементов . . . . . . . 289
10 .3 . Редакторы элементов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 29
10 .3 .1 . Активация опции редактирования элементов .  .  .  .  .  .  .  .  .  . 292
10 .3 .2 . Создание редактора элементов . . . . . . . . . . . . . . . . . . . . 294
10 .3 .3 . События, инициируемые во время процесса
редактирования .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 296
10 .3 .4 . Объединяем силы: rendererIsEditor .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 297
10 .4 . Продвинутые редакторы элементов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 298
10 .4 .1 . AdvancedDataGridRendererProvider . . . . . . . . . . . . . . . . . . 299
10 .4 .2 . Ссылка на столбец .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 300
10 .4 .3 . Охват столбцов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 301
10 .4 .4 . Охват строки целиком . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
10 .5 . Функции фильтрации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 303
10 .6 . Заключение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 305
Часть II. Поток и структура приложения
Глава 11. События .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 308
11 .1 . Система событий .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 308
11 .1 .1 . Система событий — принцип Голливуда .  .  .  .  .  .  .  .  .  .  .  .  .  . 311
11 .1 .2 . Система доставки событий .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 311
11 .2 . Отправка и получение событий .  .  .  .  .  .  .  .  .  .  .  .  .  .  . &nbs