"Это новая книга Колина Мука". Данной фразы будет достаточно, чтобы в книжные магазины выстроились очереди из флэшеров. Не было и нет автора, который бы по авторитету и влиянию мог равняться Колину Муку. Он был первым, кто написал достойную книгу по ActionScript сразу же после появления этого языка в далеком 2001 году. ActionScript стремительно развивался, превращаясь в полноценный объектно-ориентированный язык. И неизменную помощь в освоении очередных революционных нововведений начинающим и опытным флэшерам по всему миру оказывали книги Колина Мука.
Казалось бы, еще совсем недавно всех поразил ActionScript 2.0, в котором появились все особенности объектно-ориентированного языка. Однако по своей сути это оставался старый добрый ActionScript 1.0, что проявлялось в формальности многих возможностей. Эти недостатки исчезли в ActionScript 3.0, который стал мощнее, удобнее, строже, быстрее. Книга "ActionScript 3.0 для Flash. Подробное руководство", будучи лучшим руководством по ActionScript 3.0, объединяет в себе достоинства своих предшественниц - "Essentials ActionScript 2.0" и "ActionScript for Flash MX: The Definition Guide". В ней рассматриваются как фундаментальные основы языка и ключевые идеи объектно-ориентированного программирования, так и конкретные возможности по управлению содержимым Flash-приложений. Уникальный авторский стиль, множество реальных примеров, грамотный перевод - все это позволит освоить ActionScript 3.0 быстро и легко.
Оглавление
Предисловие ...............................................................................................................................16
Введение ......................................................................................................................................19
Для новичков ...........................................................................................................................19
Профессиональное руководство ......................................................................................20
Структура книги ....................................................................................................................20
Чего нет в этой книге ............................................................................................................21
Привязка к среде разработки .............................................................................................21
Обзор языка ActionScript ....................................................................................................21
Файлы примеров ....................................................................................................................26
Использование примеров кода .........................................................................................26
Соглашения об обозначениях ............................................................................................27
Как с нами связаться ............................................................................................................28
Safari Enabled .........................................................................................................................29
Благодарности ...........................................................................................................................30
От издательства ........................................................................................................................34
Часть I. ActionScript с нуля
Глава 1. Основные понятия ..............................................................................................36
Инструменты для написания кода на языке ActionScript .......................................36
Клиентские среды выполнения Flash .............................................................................37
Компиляция .............................................................................................................................38
Краткий обзор .........................................................................................................................39
Классы и объекты ..................................................................................................................39
Создание программы ............................................................................................................41
Пакеты ......................................................................................................................................42
Описание класса .....................................................................................................................44
Краткий обзор приложения "Зоопарк" .........................................................................47
Методы-конструкторы .........................................................................................................48
Создание объектов.................................................................................................................49
Переменные и значения.......................................................................................................53
Параметры и аргументы конструктора ..........................................................................58
Выражения ...............................................................................................................................61
Присваивание одной переменной значения другой переменной .........................62
Переменная экземпляра для нашего животного.........................................................65
Методы экземпляра ..............................................................................................................65
Члены и свойства ...................................................................................................................77
Обзор программы по созданию виртуального зоопарка ..........................................77
Глава 2. Условные операторы и циклы ......................................................................80
Условные операторы ............................................................................................................80
Циклы .......................................................................................................................................86
Булева логика ..........................................................................................................................94
Возвращение к классам и объектам .................................................................................99
Глава 3. Пересмотр методов экземпляра ................................................................ 100
Исключение ключевого слова this ................................................................................ 101
Связанные методы .............................................................................................................. 103
Использование методов для получения и изменения состояния объекта ..... 105
Get- и set-методы ................................................................................................................ 110
Обработка неизвестного количества параметров .................................................... 113
Далее: информация и поведение на уровне класса ................................................. 114
Глава 4. Статические переменные и методы ........................................................ 115
Статические переменные ................................................................................................. 115
Константы ............................................................................................................................. 118
Статические методы .......................................................................................................... 120
Объекты Class ...................................................................................................................... 123
Сравнение c терминологиями языков C++ и Java .................................................. 124
К функциям .......................................................................................................................... 125
Глава 5. Функции ............................................................................................................... 126
Функции уровня пакета ................................................................................................... 127
Вложенные функции ......................................................................................................... 129
Функции уровня исходного файла ............................................................................... 130
Доступ к описаниям из функции .................................................................................. 131
Функции в качестве значений ........................................................................................ 132
Синтаксис литералов функций...................................................................................... 132
Рекурсивные функции ...................................................................................................... 134
Использование функций в программе "Зоопарк" .................................................. 136
Обратно к классам .............................................................................................................. 140
Глава 6. Наследование ..................................................................................................... 141
Пример наследования ....................................................................................................... 141
Перекрытие методов экземпляра .................................................................................. 145
Методы-конструкторы в подклассах ........................................................................... 149
Исключение возможности расширения классов и перекрытия методов ........ 153
Создание подклассов внутренних классов ................................................................ 154
Теория наследования ........................................................................................................ 155
Отсутствие поддержки абстрактных классов и методов ...................................... 162
Применение наследования в программе по созданию
виртуального зоопарка...................................................................................................... 162
Код программы Virtual Zoo ............................................................................................. 168
Первый запуск! .................................................................................................................... 171
Глава 7. Компиляция и выполнение программы ............................................... 172
Компиляция с помощью среды разработки Flash ................................................... 172
Компиляция с помощью приложения Flex Builder ................................................ 173
Компиляция с помощью компилятора mxmlc .......................................................... 175
Ограничения компиляторов ........................................................................................... 176
Процесс компиляции и путь к классам ....................................................................... 176
Строгий режим компиляции в сравнении со стандартным режимом .............. 177
Далее: типы данных............................................................................................................ 179
Глава 8. Типы данных и проверка типов ................................................................ 180
Типы данных и аннотации типов .................................................................................. 181
Нетипизированные переменные, параметры, возвращаемые значения
и выражения ......................................................................................................................... 185
Три особых случая строгого режима............................................................................ 186
Предупреждения об отсутствующих аннотациях типов ....................................... 188
Выявление ошибок обращения на этапе компиляции .......................................... 189
Приведение типов ............................................................................................................... 189
Преобразование в примитивные типы ........................................................................ 194
Значения переменных по умолчанию ......................................................................... 197
Значения null и undefined ................................................................................................ 197
Типы данных в программе по созданию виртуального зоопарка ...................... 198
Далее: дополнительное изучение типов данных ...................................................... 202
Глава 9. Интерфейсы ........................................................................................................ 203
Аргумент в пользу интерфейсов .................................................................................... 203
Интерфейсы и классы с несколькими типами данных .......................................... 205
Синтаксис и использование интерфейсов ................................................................. 206
Другой пример использования составных типов .................................................... 210
Впереди еще много важного ............................................................................................ 216
Глава 10. Инструкции и операторы ............................................................................. 217
Инструкции .......................................................................................................................... 217
Операторы ............................................................................................................................. 219
Далее: управление списками данных ........................................................................... 228
Глава 11. Массивы ................................................................................................................ 229
Что такое массив? ............................................................................................................... 229
Анатомия массива ............................................................................................................... 229
Создание массивов ............................................................................................................. 230
Обращение к элементам массива .................................................................................. 232
Определение размера массива ....................................................................................... 234
Добавление элементов в массив .................................................................................... 236
Удаление элементов из массива .................................................................................... 241
Проверка содержимого массива с помощью метода toString( ) ......................... 243
Многомерные массивы ..................................................................................................... 244
Переходим к событиям ..................................................................................................... 245
Глава 12. События и обработка событий .................................................................. 246
Основы обработки событий в ActionScript ............................................................... 246
Обращение к объекту получателя ................................................................................. 254
Обращение к объекту, зарегистрировавшему приемник ...................................... 256
Отмена стандартного поведения событий ................................................................. 258
Приоритет приемника события ..................................................................................... 259
Приемники событий и управление памятью ............................................................ 261
Пользовательские события ............................................................................................. 267
Недостаток проверки типов в событийной модели языка
ActionScript ........................................................................................................................... 280
Обработка событий между границами зон безопасности ..................................... 282
Что дальше? .......................................................................................................................... 287
Глава 13. Обработка исключений и ошибок ........................................................... 288
Механизм обработки исключений ................................................................................ 288
Обработка нескольких типов исключений ................................................................ 291
Передача исключений вверх по иерархии объектов............................................... 301
Блок finally ............................................................................................................................ 306
Вложенные исключения ................................................................................................... 309
Изменение хода выполнения программы в инструкции
try/catch/finally ................................................................................................................... 313
Обработка предопределенного исключения ............................................................. 315
Впереди еще одна скучная работа ................................................................................. 316
Глава 14. Сборка мусора .................................................................................................... 317
Доступность объектов для сборки мусора ................................................................. 317
Алгоритм поэтапных пометок и вычищений ............................................................ 320
Намеренное освобождение объектов ........................................................................... 321
Деактивация объектов ...................................................................................................... 323
Сборка мусора в действии ............................................................................................... 325
К задворкам языка ActionScript .................................................................................... 326
Глава 15. Динамические возможности языка ActionScript ............................ 328
Динамические переменные экземпляра ..................................................................... 329
Динамическое добавление нового поведения в экземпляр .................................. 333
Динамические обращения к переменным и методам ............................................. 335
Использование динамических переменных экземпляра для создания
справочных таблиц ............................................................................................................. 336
Использование функций для создания объектов .................................................... 339
Использование объектов-прототипов для дополнения классов ........................ 341
Цепочка прототипов .......................................................................................................... 342
Вперед! ................................................................................................................................... 344
Глава 16. Область видимости ......................................................................................... 345
Глобальная область видимости ...................................................................................... 346
Область видимости класса .............................................................................................. 347
Область видимости статического метода ................................................................... 348
Область видимости метода экземпляра ...................................................................... 349
Область видимости функции ......................................................................................... 349
Обзор областей видимости .............................................................................................. 350
Детали реализации ............................................................................................................. 351
Расширение цепочки областей видимости с помощью оператора with .......... 352
К пространствам имен ....................................................................................................... 353
Глава 17. Пространства имен .......................................................................................... 354
Словарь пространств имен .............................................................................................. 354
Пространства имен в языке ActionScript ................................................................... 355
Создание пространств имен ............................................................................................ 357
Использование пространств имен для уточнения определений
переменных и методов ...................................................................................................... 360
Уточненные идентификаторы ........................................................................................ 363
Функциональный пример использования пространств имен ............................ 365
Доступность пространств имен ..................................................................................... 368
Видимость уточненных идентификаторов ................................................................ 372
Сравнение уточненных идентификаторов................................................................. 374
Присваивание и передача значений пространств имен......................................... 375
Пример использования значения пространства имен ........................................... 377
Открытые пространства имен и директива use namespace ................................... 387
Пространства имен для модификаторов управления доступом ........................ 391
Практические примеры использования пространств имен ................................. 394
Последние основные темы ............................................................................................... 406
Глава 18. Язык XML и расширение E4X .................................................................. 407
Данные XML в виде иерархии ....................................................................................... 407
Представление данных XML в расширении E4X .................................................... 409
Создание данных XML с помощью расширения E4X ........................................... 411
Обращение к данным XML ............................................................................................. 413
Обработка данных XML с помощью циклов for-each-in и for-in ....................... 432
Обращение к потомкам ..................................................................................................... 434
Фильтрация данных XML ............................................................................................... 438
Обход деревьев XML ......................................................................................................... 441
Изменение или создание нового содержимого XML ............................................. 442
Загрузка XML-данных ...................................................................................................... 452
Использование пространств имен XML ..................................................................... 454
Преобразование объектов XML и XMLList в строки ............................................ 460
Определение равенства в расширении E4X .............................................................. 463
Дальнейшее изучение ........................................................................................................ 466
Глава 19. Ограничения безопасности Flash Player .............................................. 467
Чего нет в этой главе .......................................................................................................... 468
Локальная область действия, удаленная область действия
и удаленные регионы ......................................................................................................... 468
Типы безопасности песочниц ......................................................................................... 469
Обобщения в вопросах безопасности вредны........................................................... 471
Ограничения на загрузку содержимого, обращение к содержимому
в виде данных, кросс-скриптинг и загрузка данных ............................................... 472
Безопасность сокетов ........................................................................................................ 479
Примеры сценариев безопасности ................................................................................ 480
Выбор локального типа безопасности песочницы .................................................. 483
Разрешения распространителя (файлы политики безопасности) .................... 488
Разрешения создателя (allowDomain( )) ................................................................... 504
Импортирующая загрузка ............................................................................................... 506
Обработка нарушений безопасности ........................................................................... 508
Домены безопасности ........................................................................................................ 511
Две распространенные проблемы разработки, связанные
с безопасностью ................................................................................................................... 513
К части II! .............................................................................................................................. 515
Часть II. Отображение и интерактивность
Глава 20. API отображения и список отображения ............................................ 518
Обзор API отображения ................................................................................................... 519
Список отображения ......................................................................................................... 523
Контейнеры и глубины ..................................................................................................... 530
События контейнеров ....................................................................................................... 549
Пользовательские графические классы ...................................................................... 561
Переходим к цепочке диспетчеризации событий .................................................... 563
Глава 21. События и иерархии отображения ......................................................... 564
Иерархическая диспетчеризация событий ................................................................ 564
Фазы диспетчеризации событий ................................................................................... 565
Приемники событий и цепочка диспетчеризации событий ................................ 566
Использование цепочки диспетчеризации событий
для централизации кода ................................................................................................... 574
Определение текущей фазы события .......................................................................... 577
Отличие событий, получателем которых является некий объект,
от событий, получателями которых являются его потомки ................................ 580
Остановка процесса диспетчеризации события ...................................................... 581
Приоритет и цепочка диспетчеризации событий .................................................... 586
Изменение иерархии отображения и цепочка диспетчеризации
событий ................................................................................................................................. 587
Пользовательские события и цепочка диспетчеризации события .................... 590
Переходим к событиям ввода ......................................................................................... 595
Глава 22. Интерактивность .............................................................................................. 596
События мыши .................................................................................................................... 597
События фокуса .................................................................................................................. 614
События ввода с клавиатуры .......................................................................................... 621
События текстового ввода ............................................................................................... 631
События ввода уровня приложения Flash Player .................................................... 646
Из программы на экран .................................................................................................... 652
Глава 23. Обновления экрана ......................................................................................... 653
Запланированные обновления экрана ........................................................................ 653
Постсобытийные обновления экрана .......................................................................... 663
Область перерисовки......................................................................................................... 667
Оптимизация с использованием события Event.RENDER ................................. 667
Заставим его двигаться! .................................................................................................... 676
Глава 24. Программная анимация ................................................................................ 677
Никаких циклов .................................................................................................................. 677
Создание анимации с помощью события ENTER_FRAME ................................ 678
Создание анимации с использованием события TimerEvent.TIMER ............. 684
Выбор между классом Timer и событием Event.ENTER_FRAME ................... 690
Обобщенный класс Animator .......................................................................................... 691
Анимация, основанная на скорости ............................................................................. 695
Переходим к контурам и заливкам ............................................................................... 697
Глава 25. Рисование с помощью векторов ............................................................... 698
Обзор класса Graphics ....................................................................................................... 698
Рисование линий................................................................................................................. 699
Рисование кривых .............................................................................................................. 702
Рисование фигур ................................................................................................................. 703
Удаление векторного содержимого .............................................................................. 705
Пример: библиотека объектно-ориентированных фигур ..................................... 706
От линий к пикселам ......................................................................................................... 716
Глава 26. Программирование растровой графики ............................................... 717
Классы BitmapData и Bitmap ......................................................................................... 718
Значения цвета пикселов ................................................................................................. 718
Создание нового растрового изображения ................................................................ 723
Загрузка внешнего растрового изображения ............................................................ 725
Анализ растрового изображения ................................................................................... 727
Внесение изменений в растровое изображение ....................................................... 734
Копирование графики в объект BitmapData ............................................................. 742
Применение фильтров и эффектов .............................................................................. 757
Освобождение памяти, занимаемой растровыми изображениями ................... 765
Слова, слова, слова ............................................................................................................. 766
Глава 27. Отображение и ввод текста ......................................................................... 767
Создание и отображение текста ..................................................................................... 769
Изменение содержимого текстового поля ................................................................. 776
Форматирование текстовых полей ............................................................................... 779
Шрифты и отображение текста ..................................................................................... 808
Отсутствующие шрифты и глифы ................................................................................ 822
Определение доступности шрифта .............................................................................. 823
Определение доступности глифа .................................................................................. 825
Отображение текста с помощью встраиваемых шрифтов .................................... 826
Ввод через текстовые поля .............................................................................................. 829
Текстовые поля и среда разработки Flash .................................................................. 834
Загрузка... Пожалуйста, подождите.............................................................................. 835
Глава 28. Загрузка внешних отображаемых элементов .................................... 836
Использование класса Loader для загрузки отображаемых элементов
на этапе выполнения .......................................................................................................... 837
Проверка типов на этапе компиляции для динамически загружаемых
элементов ............................................................................................................................... 857
Обращение к элементам в многокадровых SWF-файлах ..................................... 867
Создание экземпляра элемента, загружаемого на этапе выполнения .............. 870
Использование сокетов для загрузки отображаемых элементов на этапе
выполнения ........................................................................................................................... 873
Удаление SWF-элементов, загруженных на этапе выполнения ........................ 883
Встраивание отображаемых элементов на этапе компиляции ........................... 885
К части III .............................................................................................................................. 897
Часть III. Практическое применение ActionScript
Глава 29. Язык ActionScript и среда разработки Flash ...................................... 900
Документ Flash .................................................................................................................... 900
Временные шкалы и кадры ............................................................................................. 901
Создание сценариев на временной шкале .................................................................. 905
Класс документа .................................................................................................................. 907
Символы и экземпляры .................................................................................................... 911
Связанные классы для символов Movie Clip (Клип) ............................................ 913
Обращение к созданным вручную экземплярам символов ................................. 917
Обращение к созданному вручную тексту ................................................................. 924
Программное управление временной шкалой .......................................................... 925
Создание экземпляров символов среды разработки Flash из кода
на языке ActionScript ......................................................................................................... 926
Имена экземпляров для отображаемых объектов, создаваемых
программным путем ........................................................................................................... 927
Связывание нескольких символов с одним суперклассом .................................. 928
Композиционный подход как альтернатива связанным классам ...................... 931
Предварительная загрузка классов .............................................................................. 932
Далее в программе: использование платформы разработки Flex ...................... 935
Глава 30. Минимальное приложение на языке MXML .................................... 936
Общий подход ...................................................................................................................... 936
Реальный пример применения компонентов пользовательского
интерфейса ............................................................................................................................ 939
Передача кода вашим друзьям ....................................................................................... 940
Глава 31. Распространение библиотеки классов .................................................. 941
Совместное использование исходных файлов классов ......................................... 941
Распространение библиотеки классов в виде SWC-файла ................................. 943
Распространение библиотеки классов в виде SWF-файла .................................. 948
Неужели на этом все закончится? ................................................................................ 954
Приложение. Окончательная версия программы "Зоопарк" .................... 956
Алфавитный указатель ...................................................................................................... 972
Данная книга является хорошим руководством по практической стороне разработки динамических приложений в среде Flash MX. Авторы последовательно излагают принципы программирования с использованием языка ActionScript. Каждая глава посвящена разработке какого-нибудь законченного приложения, будь то клиент электронной почты или система обмена мгновенными сообщениями.
Сборник предложенных экспертами советов и трюков, предназначенных для оптимизации ваших Flash-приложений, создания интересных эффектов, программ на ActionScript, звуковых и видеоэффектов, и т. п. Трюки ранжированы по степени сложности.