Оглавление
Предисловие 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
Переменные и значения538 Оглавление
Параметры и аргументы конструктора 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Оглавление 9
Методы-конструкторы в подклассах 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
Далее: управление списками данных 22810 Оглавление
Глава 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Оглавление 11
Глава 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 40912 Оглавление
Создание данных 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Оглавление 13
Глава 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
Оптимизация с использованием события EventRENDER 667
Заставим его двигаться! 676
Глава 24 Программная анимация 677
Никаких циклов 677
Создание анимации с помощью события ENTER_FRAME 678
Создание анимации с использованием события TimerEventTIMER 684
Выбор между классом Timer и событием EventENTER_FRAME 690
Обобщенный класс Animator 691
Анимация, основанная на скорости 695
Переходим к контурам и заливкам 697
Глава 25 Рисование с помощью векторов 698
Обзор класса Graphics 698
Рисование линий 69914 Оглавление
Рисование кривых 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Оглавление 15
Часть 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