год-2011
720 страниц
Книга Flex 4. Рецепты программирования. Ноубл построена как справочник по решению типовых задач, что позволяет лучше понять особенности платформы Flex Framework. Рассказывается о том, как обеспечить взаимодействие различных компонентов и как объединить Flex с другими технологиями для создания полнофункциональных интернет-приложений. Рассматриваются основы работы с Flex и программирование на ActionScript, списки и визуализаторы элементов, связывание и проверка допустимости данных, форматирование и регулярные выражения, работа со службами, взаимодействие с сервером и браузером, работа с данными в среде AIR, интеграция операционной системы со средой AIR, тестирование модулей с помощью FlexUnit и др.
Оглавление книги
Flex 4. Рецепты программирования. Ноубл
Оглавление Предисловие 1
Для кого эта книга 1
Кому не следует читать эту книгу 2
Как организована эта книга 2
Обозначения, принятые в книге 3
Использование кода 3
Как использовать эту книгу 4
Сборники рецептов от издательства O'Reilly 4
Цифровые библиотеки 4
Как с нами связаться 5
Благодарности 5
Об авторах 9
Глава 1. Основы работы с Flex и программирования на ActionScript
11
1.1. Создание Flex-проекта в среде Flash Builder 12
1.2. Создание проекта Flex Library в среде Flash Builder 15
1.3. Настройка опций компилятора в среде Flash Builder 17
1.4. Компиляция Flex-проекта вне среды Flash Builder 20
1.5. Добавление слушателя событий в MXML-файл 22
1.6. Создание типизированных векторов 24
1.7. Использование всплывания событий 25
1.8. Использование нестандартных событий и передача данных с событиями 27
1.9. Прослушивание событий клавиатуры 28
1.10. Определение необязательных параметров у методов 29
1.11. Определение и реализация интерфейса 30
1.12. Обращение к родителю Flex-компонента 32
Глава 2. Контейнеры
35
2.1. Расположение элементов в контейнере 36
2.2. Динамическое добавление и удаление потомков 38
2.3. Переупорядочивание потомков в контейнере 41
2.4. Вывод потомков на экран с учетом элементов данных 43
2.5. Использование нестандартного визуализатора элементов в контейнере DataGroup 46
2.6. Использование нескольких визуализаторов элементов в контейнере DataGroup 49
2.7. Прокрутка в контейнере 52
2.8. Масштабирование потомков контейнера 57
2.9. Применение скинов к контейнеру 59
2.10. Установка фонового изображения в контейнере BorderContainer 64
2.11. Использование панели элементов управления 66
2.12. Изменение компоновки элементов содержимого в контейнере Panel 68
2.13. Отслеживание положения мыши в контейнере 71
2.14. Перетаскивание элементов с одного визуального контейнера на другой 73
2.15. Перетаскивание элементов с одного контейнера данных на другой 78
2.16. Добавление компоновочного контейнера пакета Spark в навигационный контейнер пакета МХ 82
2.17. Создание Spark-эквивалента для контейнера ViewStack 84
Глава 3. Компоновка
91
3.1. Линейное расположение потомков 92
3.2. Переключение способа компоновки на этапе выполнения 93
3.3. Выравнивание элементов контейнера в компоновке 95
3.4. Размещение потомков по строкам и столбцам 98
3.5. Унификация размера потомков 100
3.6. Создание по мере необходимости и повторное использование потомков 102
3.7. Создание нестандартной компоновки 105
3.8. Измерение и изменение размера контейнера 107
3.9. Динамическое изменение глубины потомков в компоновке 109
3.10. Использование класса Matrix3D для преобразований внутри компоновки 111
3.11. Использование класса TransformOffsets для преобразований внутри компоновки 113
3.12. Создание нестандартной трехмерной компоновки 117
3.13. Программная реализация прокрутки в компоновке 120
3.14. Определение видимости элементов в последовательной компоновке 123
Глава 4. Графика
127
4.1. Управление размером и местоположением графического элемента 129
4.2. Использование класса Path для рисования фигуры с заданной заливкой и заданными характеристиками линии 130
4.3. Вывод текста в графический элемент 134
4.4. Вывод растрового изображения в графическом элементе 136
4.5. Вывод текста с градиентом 139
4.6. Наложение растровых данных в качестве маски на графический элемент 140
4.7. Создание нестандартного графического элемента 143
4.8. Создание отдельного нестандартного графического компонента 146
4.9. Определение и многократное использование графических символов 149
Глава 5. Компоненты
153
5.1. Обработка щелчка по кнопке 153
5.2. Создание панели с кнопками 156
5.3. Загрузка внешнего SWF-файла 158
5.4. Ввод даты с помощью календаря 159
5.5. Создание обработчиков событий для элементов управления меню 162
5.6. Вывод сообщения пользователю приложения 163
5.7. Вывод нестандартного всплывающего компонента 165
5.8. Распознавание щелчка мышью за пределами всплывающего компонента и закрытие его 167
5.9. Применение компонента s:Scroller для создания контейнера с прокруткой 168
5.10. Обработка событий focusIn и focusOut 169
5.11. Показ раскрывающегося списка в ответ на клавиатурное сокращение 170
5.12. Группирование кнопок-переключателей 172
5.13. Отправка Flex-формы серверному сценарию 174
Глава 6. Скины и стили
177
6.1. Создание скина для элемента s:ButtonSkin 177
6.2. Накладывание повторяющегося фонового изображения на область приложения 179
6.3. Создание скина для компонентов s:ButtonBar и s:ButtonBarButton 181
6.4. Наложение скина на элемент управления s:DropDownList 183
6.5. Скин для Spark-контейнера 186
6.6. Изменение внешнего вида компонентов с помощью стилей 187
6.7. Наложение скинов и установка свойств Spark- и МХ-компонентов с помощью таблиц CSS 189
6.8. Создание кнопки с пиктограммой 191
6.9. Добавление нестандартных стилевых свойств 193
6.10. Частичное встраивание шрифтов с помощью CSS 195
Глава 7. Работа с текстом
197
7.1. Создание объекта TextFlow 198
7.2. Создание объекта TextFlow из другого источника 199
7.3. Создание ссылок в объекте TextFlow 201
7.4. Добавление графических элементов в объект TextFlow 202
7.5. Связывание значения с элементом управления s:TextInput 203
7.6. Создание нестандартного стиля, действующего избирательно 204
7.7. Стилизация ссылок в объекте TextFlow 206
7.8. Поиск элементов в объекте TextFlow 208
7.9. Поиск всех шрифтов, установленных на компьютере пользователя 209
7.10. Вертикальный вывод текста в текстовой области 211
7.11. Выделение текста в элементе TextArea 213
7.12. Управление внешним видом выделенного текста 214
7.13. Копирование символа в виде растрового изображения 215
7.14. Создание связанных контейнеров для объекта TextFlow 218
7.15. Использование нестандартного преобразователя формата 220
7.16. Создание скина для элемента управления TextArea 223
7.17. Вывод текста в несколько столбцов 224
7.18. Выделение последнего символа в объекте TextFlow 225
Глава 8. Списки и визуализаторы элементов
227
8.1. Создание визуализатора элементов для списка Spark 227
8.2. Создание редактируемого списка 229
8.3. Прокрутка к нужному элементу в Spark-списке 231
8.4. Изменение компоновки Spark-списка 231
8.5. Создание вложенного списка 232
8.6. Указание XML-данных для Spark-компонента List 235
8.7. Реализация Spark-компонента List, в котором можно выделить только некоторые элементы 237
8.8. Форматирование и проверка допустимости введенных данных в редакторе элементов Spark-компонента List 239
8.9. Создание контекстного меню для Spark-компонента List 244
8.10. Реализация перетаскивания в Spark-компоненте List 246
8.11. Изменение внешнего вида индикатора операции перетаскивания у Spark-компонента List 249
8.12. Вывод данных, асинхронно загруженных в Spark-компонент List 253
Глава 9. Таблицы
257
9.1. Определение нестандартных столбцов у компонента DataGrid 257
9.2. Определение функций сортировки столбцов компонента DataGrid 261
9.3. Фильтрация элементов в компоненте DataGrid 262
9.4. Создание заголовков для компонента DataGrid 265
9.5. Обработка событий компонента DataGrid 267
9.6. Реализация перетаскивания в компоненте DataGrid 272
9.7. Редактирование элементов в компоненте DataGrid 273
9.8. Поиск внутри компонента DataGrid и автоматическая прокрутка к найденному элементу 275
9.9. Генерирование сводки для плоских данных с помощью объекта GroupingCollection 277
9.10. Асинхронное обновление объекта GroupingCollection 280
Глава 10. Видео
285
10.1. Создание базового видеоплеера 285
10.2. Вывод индикатора хода воспроизведения 286
10.3. Создание видеоплеера со скином 288
10.4. Вывод потокового видео 291
10.5. Вывод количества загруженных байтов видеоданных 292
10.6. Создание базового видеоплеера с помощью OSMF 293
10.7. Чтение и вывод точек поиска, встроенных в видеофайл 294
10.8. Создание оболочки для OSMF 297
10.9. Вывод титров с помощью OSMF 298
Глава 11. Анимация и эффекты
303
11.1. Динамическая настройка фильтра для компонента 304
11.2. Вызов анимации в MXML-разметке и в коде ActionScript 305
11.3. Создание эффектов, проявляющихся, когда компонент скрыт или показан 307
11.4. Определение ключевых кадров анимации 309
11.5. Создание параллельных эффектов или последовательностей эффектов 311
11.6. Пауза, рестарт и воспроизведение эффекта в обратном направлении 312
11.7. Создание эффектов, сопровождающих добавление или удаление компонента 313
11.8. Создание нестандартных анимационных эффектов 316
11.9. Применение фильтра DisplacementMapFilter во Flex-эффекте 318
11.10. Применение фильтра ConvolutionFilter 322
11.11. Применение фильтра Pixel Bender для создания перехода 326
Глава 12. Коллекции
331
12.1. Добавление, удаление и чтение данных из объекта ArrayList 331
12.2. Чтение и сортировка данных из объекта ArrayCollection 333
12.3. Фильтрация объекта ArrayCollection 335
12.4. Распознавание наличия изменений внутри объект ArrayCollection 336
12.5. Создание объекта GroupingCollection2 337
12.6. Создание иерархического провайдера данных для элемента управления 339
12.7. Навигация в коллекции и сохранение позиции 344
12.8. Создание объекта HierarchicalViewCollection 346
12.9. Фильтрование и сортировка объекта XMLListCollection 349
12.10. Сортировка по нескольким полям в коллекции 351
12.11. Сортировка элементов коллекции по дате 352
12.12. Создание глубокой копии объекта ArrayCollection 353
12.13. Использование объектов данных с уникальными идентификаторами 356
Глава 13. Связывание данных
359
13.1. Связывание со свойством 360
13.2. Связывание с функцией 362
13.3. Создание двунаправленного связывания 364
13.4. Связывание свойств с помощью ActionScript 365
13.5. Цепочки связанных свойств 369
13.6. Связывание свойств объекта с XML-документом с применением Е4Х 371
13.7. Создание нестандартных связываемых свойств 373
13.8. Связывание с обобщенным объектом 377
13.9. Связывание со свойствами динамического класса 379
Глава 14. Проверка допустимости данных, форматирование и регулярные выражения
385
14.1. Применение валидаторов и форматеров в элементах управления 386
14.2. Создание нестандартного форматера 389
14.3. Применение регулярных выражений для создания валидатора международных почтовых индексов 390
14.4. Проверка корректности для комбинированных списков и групп переключателей 393
14.5. Показ ошибок проверки допустимости с помощью объектов ToolTip в форме 396
14.6. Применение регулярных выражений для поиска адресов электронной почты 399
14.7. Применение регулярных выражений для поиска номеров кредитных карт 399
14.8. Применение регулярных выражений для проверки номеров ISBN 400
14.9. Создание регулярных выражений с явно указанными классами символов 400
14.10. Указание типов символов регулярных выражений 401
14.11. Поиск корректных IP-адресов с применением подвыражений 403
14.12. Применение регулярных выражений при поиске различных образцов 404
14.13. Поиск начала или конца строки с помощью регулярных выражений 406
14.14. Применение обратных ссылок 406
14.15. Просмотр вперед и просмотр назад 407
Глава 15. Работа со службами и взаимодействие с сервером
409
15.1. Конфигурирование компонента HTTPService 410
15.2. RESTful-взаимодействие между Flex-приложениями 412
15.3. Взаимодействие со службой, возвращающей данные в формате JSON 414
15.4. Конфигурирование служб для приложения, использующего сервер BlazeDS 417
15.5. Конфигурирование компонента RemoteObject и связь с ним 421
15.6. Использование модели "публикация/подписка" для приложений-чатов 424
15.7. Применение интерфейса IExternalizable для нестандартной сериализации 429
15.8. Отслеживание результатов нескольких одновременных обращений к службе 431
15.9. Регистрация типа серверных данных во Flex-приложении 432
15.10. Взаимодействие с объектом WebService 434
15.11. Добавление заголовка SOAP в запрос к веб-службе 436
15.12. Разбор SOAP-ответа от веб-службы 437
15.13. Безопасное взаимодействие с AMF при помощи объекта SecureAMFChannel 439
15.14. Отправка и получение двоичных данных через сокетное соединение 440
15.15. Взаимодействие с сервером при помощи объекта XMLSocket 441
15.16. Навигация по XML-документу с помощью Е4Х 442
15.17. Использование регулярных выражений в запросах Е4Х 444
15.18. Добавление объекта XMLList в объект XML 445
15.19. Обработка пространств имен в XML-документе, возвращенном службой 447
15.20. Преобразование объекта данных ActionScript в XML-документ 448
15.21. Преобразование XML-документа, возвращенного веб-службой, в строго типизированные объекты 449
Глава 16. Взаимодействие с браузером
453
16.1. Переход по внешнему URL-адресу 453
16.2. Работа с классом FlashVars 454
16.3. Вызов функций JavaScript из Flex-приложения 456
16.4. Вызов функций ActionScript из кода JavaScript 457
16.5. Изменение заголовка HTML-страницы с помощью объекта BrowserManager 459
16.6. Разбор URL-адреса с помощью объекта BrowserManager 460
16.7. Внешние ссылки на данные с помощью объекта BrowserManager 462
16.8. Внешние ссылки на контейнеры с помощью объекта BrowserManager 464
Глава 17. Модули и совместно используемые библиотеки этапа выполнения
467
17.1. Создание RSL-библиотеки 468
17.2. Междоменные совместно используемые библиотеки этапа выполнения 471
17.3. Оптимизация совместно используемой библиотеки этапа выполнения 473
17.4. Создание модуля на основе MXML 474
17.5. Создание модуля на языке ActionScript 476
17.6. Загрузка модулей с помощью класса ModuleLoader 478
17.7. Загрузка модулей с помощью класса ModuleManager 480
17.8. Загрузка модулей с разных серверов 482
17.9. Взаимодействие с модулем 484
17.10. Отправка данных модулю через строки запросов 488
17.11. Использование отчетов редактора связей для оптимизации модулей 490
Глава 18. Основы работы с AIR
493
18.1. Создание и запуск AIR-приложения в Flash Builder 4 493
18.2. Подписывание и экспорт AIR-приложения 496
18.3. Подписывание AIR-файла сертификатом, заслуживающим доверия 498
18.4. Разработка под конкретную версию AIR 499
18.5. Установка идентификатора приложения 500
18.6. Указание имени приложения и имени его файла 501
18.7. Указание версии приложения 502
18.8. Редактирование описания приложения и информации об авторских правах 503
18.9. Редактирование параметров стартового окна 505
18.10. Указание установочного каталога для приложения 507
18.11. Указание папки для меню Программы 508
18.12. Установка нестандартной пиктограммы для приложения 509
18.13. Взаимодействие AIR-приложения с браузером 511
18.14. Настройка приложения на корректное обновление 512
18.15. Выяснение версии приложения на этапе выполнения 513
18.16. Создание многоязычных установок AIR-приложения 514
18.17. Создание приложений со способностью к обновлению 515
18.18. Создание приложений со способностью к обновлению нестандартным интерфейсом 520
18.19. Упаковка приложения в стандартный установщик 527
18.20. Включение низкоуровневого кода в AIR-приложение 529
Глава 19. Работа с данными в среде AIR
533
19.1. Защита файлов с помощью зашифрованного локального хранилища 533
19.2. Отображение обновлений в сериализованной версии 536
19.3. Создание базы данных в оперативной памяти 538
19.4. Защита базы данных с помощью пароля 538
19.5. Использование параметров в запросах 542
19.6. Встраивание базы данных в приложение 547
19.7. Сохранение простых отношений с помощью ORM 548
Глава 20. Интеграция операционной системы со средой AIR
553
20.1. Одновременное закрытие всех открытых окон 554
20.2. Добавление тени к нестандартному окну 555
20.3. Отложенный вывод на экран данных из буфера обмена 560
20.4. Создание нестандартных форматов данных для буфера обмена 561
20.5. Закрепление "горячих" клавиш за пунктами меню 565
20.6. Уведомление пользователя через панель Dock (в Mac OS) или панель задач (в Windows) 566
20.7. Регистрация нестандартных типов файлов 569
20.8. Открытие файла в приложении, ассоциированном с ним по умолчанию 572
20.9. Проверка смонтированных и размонтированных устройств 576
20.10. Получение списка доступных внешних дисков 577
20.11. Сообщить операционной системе, что файл был загружен из Интернета 583
20.12. Распространение AIR-приложения в виде собственного установщика 584
20.13. Создание HTTP-прокси с помощью класса ServerSocket 590
Глава 21. Диаграммы
595
21.1. Создание диаграммы 595
21.2. Применение эффектов 598
21.3. Выделение областей диаграммы 601
21.4. Форматирование надписей на осях диаграммы 603
21.5. Создание нестандартной метки на диаграмме 605
21.6. Применение эффекта детализации данных для гистограммы 606
21.7. Смена скинов у элементов диаграммы 609
21.8. Динамическое добавление и удаление столбиков диаграммы 612
21.9. Перекрытие нескольких рядов данных 615
21.10. Перетаскивание элементов диаграммы мышью 616
21.11. Создание редактируемой диаграммы 619
Глава 22. Тестирование модулей с помощью FlexUnit
623
22.1. Создание приложения, работающего на платформе FlexUnit 624
22.2. Создание приложения для запуска тестов FlexUnit 624
22.3. Создание тестового случая FlexUnit 627
22.4. Выполнение кода до и после каждого теста 630
22.5. Использование одних данных в разных тестовых случаях 632
22.6. Обработка событий в тестовом случае 634
22.7. Тестирование визуальных компонентов с помощью FlexUnit 636
22.8. Создание макетов для тестирования 645
22.9. Применение сложных утверждений в тестовом случае 648
Глава 23. Компиляция, отладка и развертывание
651
23.1. Применение операторов trace вне среды Flash Builder 651
23.2. Работа с компилятором компонентов 653
23.3. Установка библиотеки Flex Ant tasks 654
23.4. Компиляция Flex-приложений с помощью программ mxmlc и Ant 656
23.5. Применение программы Ant для компиляции и развертывания Flex-приложений, использующих RSL-библиотеки 658
23.6. Компиляция Flex-приложений с помощью программы Rake 661
23.7. Создание и просмотр выражений в отладчике Flash Builder Debugger 662
23.8. Установка Ant в автономной версии Flash Builder 664
23.9. Генерирование документации с помощью ASDoc и Ant 665
23.10. Опция экспресс-установки 666
23.11. Профилирование памяти с помощью Flash Builder 668
23.12. Проверка производительности конкретных методов 670
Глава 24. Локализация, доступность и вывод на печать
673
24.1. Добавление международного набора символов 673
24.2. Локализация приложения с помощью пакетов ресурсов 676
24.3. Использование класса ResourceManager для локализации 680
24.4. Применение модулей ресурсов для локализации 682
24.5. Поддержка редактора метода ввода 685
24.6. Распознавание программ озвучивания текста 687
24.7. Определение порядка перехода фокуса 687
24.8. Печать выделенных элементов приложения 689
24.9. Форматирование содержимого приложения перед печатью 690
24.10. Управление многостраничной печатью содержимого неизвестного размера 692
24.11. Добавление колонтитулов в распечатку 693
Предметный указатель 697
XIV Оглавление XIII Оглавление