Оглавление
Введение
Благодарности

Часть I. Начало
Глава 1. Flash глазами энтузиаста: процесс и дисциплина
Моя биография
Университетские годы
Курсы повышения квалификации
Первая встреча с Flash
Дисциплина как центральное понятие
Что такое дисциплина?
Привычки
Мои дисциплины
Самообразование
Специализированная практика
Пример: изучение "горячих" клавиш
Сообщество
Изучать, преподавая
Открытый исходный код
Итеративный процесс
Развитие по спирали
Расстановка приоритетов
Учет перспективы
Расположение материала

Глава 2. Объектно-ориентированное программирование
Суть программирования
Память и переменные
Умение и функции
Объекты: память и умение
Свойства и методы
Классы
Встроенные классы и объекты среды Flash
Конструкторы классов
Создание экземпляров визуальных классов
Свойство-прототип
Добавление методов к классам
Переопределение встроенных методов
Создание производных от статических объектов
Классические понятия объектно-ориентированного программирования
Абстракция
Инкапсуляция
Полиморфизм
Разработка пользовательского класса
Анализ
Случаи использования
Сценарии случаев использования
Проектирование
Выбор свойств
Выбор методов
Отношения между объектами
Схемы классов
Разработка класса на языке ActionScript
Конструктор PhotoAlbum
Метод showPhotoAt()
Метод next()
Метод prev()
Класс PhotoAlbum в действии
Наследование классов
Наследование методов и свойств
Наследование свойств с помощью функции super()
Наследование методов
Объект super
Наследование методов и ключевое слово new
Наследование методов с помощью свойства _ _proto_ _
Применение свойства _ _constructor_ _
Применение метода superCon()
Заключение

Часть II. Базовые концепции
Глава 3. Математика 1: тригонометрия
Тригонометрия
Прямоугольный треугольник
Теорема Пифагора
Расстояние между двумя точками
Углы в прямоугольных треугольниках
Синус
Косинус
Тангенс
Арктангенс
Арккосинус
Арксинус
Системы координат
Декартова система координат
Координаты среды Flash
Полярные координаты
Заключение

Глава 4. Математика 2: векторы на плоскости
Векторы
Класс Vector
Конструктор класса Vector
Метод Vector.toString()
Метод Vector.reset()
Метод Vector.getClone()
Метод Vector.equals()
Сложение векторов
Метод Vector.plus()
Метод Vector.plusNew()
Вычитание векторов
Метод Vector.minus()
Метод Vector.minusNew()
Изменение направления вектора на противоположное
Метод Vector.negate()
Метод Vector.negateNew()
Умножение вектора на скаляр
Метод Vector.scale()
Метод Vector.scaleNew()
Длина вектора
Метод Vector.getLength()
Метод Vector.setLength()
Угол вектора
Метод Vector.getAngle()
Метод Vector.setAngle()
Поворот вектора
Метод Vector.rotate()
Метод Vector.rotateNew()
Скалярное произведение
Смысл скалярного произведения
Метод Vector.dot()
Перпендикулярные векторы
Нахождение нормали
Метод Vector.getNormal()
Проверка на перпендикулярность
Метод Vector.isPerpTo()
Нахождение угла между двумя векторами
Уравнение для нахождения угла
Метод Vector.angleBetween()
Точки как векторы
Заключение

Глава 5. Математика 3: векторы в трехмерном пространстве
Оси X, Y и Z
Класс Vector3d
Конструктор класса Vector3d
Метод Vector3d.toString()
Метод Vector3d.reset()
Метод Vector3d.getClone()
Метод Vector3d.equals()
Основные операции с трехмерными векторами
Метод Vector3d.plus()
Метод Vector3d.plusNew()
Метод Vector3d.minus()
Метод Vector3d.minusNew()
Метод Vector3d.negate()
Метод Vector3d.negateNew()
Метод Vector3d.scale()
Метод Vector3d.scaleNew()
Метод Vector3d.getLength()
Метод Vector3d.setLength()
Умножение векторов
Скалярное произведение
Метод Vector3d.dot()
Векторное произведение
Метод Vector3d.cross()
Угол между векторами
Уравнение для угла между векторами
Метод Vector3d.angleBetween()
Проекция на плоскость экрана
Метод Vector3d.getPerspective()
Метод Vector3d.persProject()
Метод Vector3d.persProjectNew()
Поворот в трехмерном пространстве
Поворот вокруг оси X
Метод Vector3d.rotateX()
Метод Vector3d.rotateXTrig()
Поворот вокруг оси Y
Метод Vector3d.rotateY()
Метод Vector3d.rotateYTrig()
Поворот вокруг оси Z
Метод Vector3d.rotateZ()
Метод Vector3d.rotateZTrig()
Метод Vector3d.rotateXY()
Метод Vector3d.rotateXYTrig()
Метод Vector3d.rotateXYZ()
Метод Vector3d.rotateXYZTrig()
Изображение трехмерных частиц
Класс Particle3d
Метод Particle3d.attachGraphic()
Метод Particle3d.render()
Пример: "Стена из частиц"
Проект
Функция getWallPoints()
Инициализация стены
Функция arrayRotateXY()
Создание анимации методом onEnterFrame
Заключение

Глава 6. Программирование, управляемое событиями
Модель событий Flash 5
Модель событий Flash МХ
События кнопок и клипов во Flash МХ
Пример: MX Glide
Слушатели
Программирование, управляемое временем
Программирование, управляемое событиями
Прослушивание объектов МХ
Пример: прослушивание класса TextField
Широковещательная рассылка "один - многим"
Встроенные источники событий
Рассылка событий: более подробно
Основные функциональные возможности источников событий
Объект ASBroadcaster
Инициализация источника событий
Широковещательная рассылка событий
Источник событий NewsFeed
Конструктор класса NewsFeed
Метод NewsFeed.toString()
Инициализация источника с помощью объекта ASBroadcaster
Ревизия конструктора
Метод NewsFeed.sendNews()
Настройка системы
Создание объекта-источника событий
Создание объектов-слушателей
Определение обработчиков событий
Регистрация слушателей
Широковещательная рассылка события
Заключение

Часть III. Динамические визуальные эффекты
Глава 7. Движение, твининг и ускорение
Понятия, связанные с движением
Более подробно о положении
Положение как функция времени
Графическое представление движения
Статические твин-последовательности во Flash
Динамический твининг на языке ActionScript
Стандартное экспоненциальное скольжение
Базовые компоненты твин-последовательности
Функции твининга
Линейный твининг
График
Функция на языке ActionScript
Реализация твин-последовательности с помощью функции
Эстетические аспекты линейного движения
Ускорение
Эстетические аспекты движения с ускорением
Разгон
Замедление
Разгон с последующим замедлением
Разновидности твин-последовательностей с ускорением
Квадратичное ускорение
Кубическое ускорение
Ускорение четвертой степени
Ускорение пятой степени
Синусоидальное ускорение
Экспоненциальное ускорение
Круговое ускорение
Введение в класс Tween
Класс Motion
Конструктор класса Motion
Открытые методы
Методы чтения и установки
Закрытые методы
Свойства для чтения и установки
Заключительные действия
Класс Tween
Конструктор класса Tween
Открытые методы
Методы чтения и установки свойств
Свойства для чтения и установки
Заключительные действия
Заключение

Глава 8. Физика
Кинематика
Положение
Перемещение
Расстояние
Скорость
Величина скорости
Ускорение
Сила
Первый закон Ньютона
Равнодействующая сила
Второй закон Ньютона
Движение, вызванное силой, в среде Flash
Трение
Кинетическое трение
Статическое трение
Трение в жидкой или газообразной среде
Гравитация в пространстве
Гравитация вблизи поверхности Земли
Упругость
Состояние покоя
Закон Гука
Коэффициент упругости
Направление силы упругости
Реализация на языке ActionScript
Колебательное движение
Амплитуда
Частота
Период
Сдвиг во времени
Смещение положения
Уравнение колебательного движения
Класс WaveMotion
Конструктор WaveMotion
Метод WaveMotion.getPosition()
Методы чтения и установки свойств класса WaveMotion
Устанавливаемые свойства класса WaveMotion
Использование класса WaveMotion
Заключение

Глава 9. Раскрашивание объектов средствами языка ActionScript
Равномерная окраска
Метод Color.setRGB()
Метод MovieClip.setRGB()
Метод Color.getRGB()
Метод MovieClip.getRGB()
Метод Color.setRGBStr()
Метод MovieClip.setRGBStr()
Метод Color.getRGBStr()
Метод MovieClip.getRGBStr()
Метод Color.setRGB2()
Метод MovieClip.setRGB2()
Метод Color.getRGB2()
Метод MovieClip.getRGB2()
Преобразование цвета
Метод Color.setTransform()
Метод MovieClip.setColorTransform()
Метод Color.getTransform()
Метод MovieClip.getColorTransform()
Возвращение к исходному цвету
Метод Color.reset()
Метод MovieClip.resetColor()
Управление яркостью
Метод Color.setBrightness()
Метод MovieClip.setBrightness()
Метод Color.getBrightness()
Метод MovieClip.getBrightness()
Смещение яркости
Метод Color.setBrightOffset()
Метод MovieClip.setBrightOffset()
Метод Color.getBrightOffset()
Метод MovieClip.getBrightOffset()
Окрашивание
Метод Color.setTint()
Метод MovieClip.setTint()
Метод Color.getTint()
Метод MovieClip.getTint()
Смещение окраски
Метод Color.setTintOffset()
Метод MovieClip.setTintOffset()
Метод Color.getTintOffset()
Метод MovieClip.getTintOffset()
Инверсия цвета
Метод Color.invert()
Метод MovieClip.invertColor()
Метод Color.setNegative()
Метод MovieClip.setNegativeColor()
Метод Color.getNegative()
Метод MovieClip.getNegativeColor()
Равномерное окрашивание в конкретный цвет
Метод setRed()
Метод setGreen()
Метод setBlue()
Метод getRed()
Метод getGreen()
Метод getBlue()
Придание цветовых свойств классу MovieClip
Свойства MovieClip._red, _green и _blue
Свойство MovieClip._rgb
Свойство MovieClip._brightness
Свойство MovieClip._brightOffset
Заключение

Глава 10. Рисование средствами языка ActionScript
Shape Drawing API
Метод MovieClip.moveTo()
Метод MovieClip.lineTo()
Метод MovieClip.lineStyle()
Метод MovieClip.curveTo()
Метод MovieClip.beginFill()
Метод MovieClip.beginGradientFill()
Метод MovieClip.endFill()
Метод MovieClip.clear()
Анимация и динамическое рисование
Анимация клипа
Анимация формы
Рисование простейших фигур
Отрезки
Треугольники
Четырехугольники
Прямоугольники
Квадраты
Точки
Многоугольники
Правильные многоугольники
Эллипсы
Круги
Определение положения курсора
Свойства MovieClip._xpen и _ypen
Свойства MovieClip._xpenStart и _ypenStart
Инициализация свойств
Кубические кривые Безье
Сравнение квадратичных и кубических кривых Безье
Методы рисования кубических кривых Безье
Заключение

Часть IV. Обзор проектов
Глава 11. Проект Aurora Borealis (Северное сияние)
Эволюция идеи
Класс PhysicsParticle
Конструктор
Открытые методы
Методы чтения и установки свойств
Закрытые методы
Свойства для чтения и установки
Заключительные действия
Класс Force
Конструктор
Методы чтения и установки свойств
Прочие методы
Свойства для чтения и установки
Заключительные действия
Класс ElasticForce
Конструктор
Методы
Свойства для чтения и установки
Заключительные действия
Простой пример
FLA-файл проекта Aurora
Код в кадрах
Компонент aurora
Клип particle
Заключение

Глава 12. Проект Snowstorm (Снежная буря)
Класс Snowflake
Вспомогательные функции
Конструктор класса Snowflake
Методы чтения и установки свойств
Закрытые методы
Класс Snowstorm
Конструктор класса Snowstorm
Открытые методы
FLA-файл snowstorm
Код в кадрах
Компонент snowstorm
Методы компонента
Заключение

Глава 13. Проект Fractal Dancer (Фрактал-танцор)
Компонент FractalTree
Параметры компонента
Методы
Класс FractalBranch
Конструктор класса FractalBranch
Методы
Класс MotionCam
Конструктор класса MotionCam
Открытые методы
Методы чтения и установки
Закрытые методы
Заключение

Глава 14. Проект Cyclone (Вихрь)
Предварительное обдумывание
Анализ поставленной задачи
Частица
Путь
Метод Path.onEnterFrame()
Метод Path.init()
Овал
Метод Oval.init()
Метод Oval.sidewind()
Компонент Cyclone
Метод Cyclone.init()
Метод Cyclone.makeParticle()
Метод Cyclone.grow()
Метод Cyclone.sidewind()
Методы Cyclone.startSidewind() и stopSidewind()
Параметры компонента
Символ Dragger
Действия в кадре клипа
Метод Dragger.appear()
Обработчик события Dragger.onEnterFrame()
Действия кнопки dragBtn
Заключение

Алфавитный указатель