- •Основы языка ActionScript 2.0 Для чего нужен Actionscript?
- •События
- •Действия
- •Операторы
- •Ключевые слова
- •Фигурные скобки
- •Точка с запятой
- •Отступы и пробелы
- •Переменные Объявление
- •Кавычки
- •Комментарии
- •Видимость переменных
- •Присваивание
- •Объекты
- •Условные операторы
- •Цикл с переменной
- •Циклы с условием
- •Перечисление свойств
- •Управление циклом
- •Лабораторная работа №1 «Знакомство с ActionScript» Панель Actions
- •Инструменты работы с кодом
- •Управление проигрыванием. Кнопки Команды управления
- •Скопируйте файл ship.Fla из папки лр1 в свою папку и в дальнейшем работайте только с ним!
- •Реакции на события
- •Метки кадров
- •Адреса: дети, родители и корень
- •Абсолютные адреса
- •Относительные адреса
- •Индивидуальное задание
- •Лабораторная работа №2 «Свойства и события клипа»
- •Свойства
- •Типы объектов
- •Обработчики событий
- •Применение события клипа
- •Присутствие: onClipEvent (load)
- •Отсутствие: onClipEvent (unLoad)
- •Движущая сила: onClipEvent (enterFrame)
- •Перемещение: onClipEvent (mouseMove)
- •Применение методов как обработчиков событий
- •Свойства объектов
- •События клипа
- •События мыши
- •Перетаскивание
- •События клипа
- •Отличие кнопки от клипа
- •Обработка событий мыши и клавиатуры
- •Функции
- •Типы функций
- •Защита паролем
- •Индивидуальное задание
- •Лабораторная работа №3 «Использование объектов среды Flash» Глобальный объект Key
- •Самостоятельное задание
- •Работа с текстом (String, Selection) Объект String — строка
- •Объект Selection
- •Использование объекта Color
- •Массивы Основные понятия
- •Копирование
- •Многомерные массивы
- •Методы для работы с массивами
- •Работа с массивами
- •Дата и время Объект Date
- •Периодический вызов функции
- •Индивидуальное задание
- •Лабораторная работа № 4 «Организация одномерного движения объектов» Математические функции
- •Одномерное движение
- •Движение на плоскости Равномерное движение
- •Неравномерное движение
- •Организация отскока объектов Одномерное движение
- •Индивидуальное задание
- •Лабораторная работа № 5«Организация движения объектов по наклонной плоскости»
- •Векторы
- •Отскок от наклонной плоскости
- •Шарик в кольце
- •Маятник
- •Загрузка символа из библиотеки
- •Определение границ клипа
- •Точка и клип Вторая форма hitTest
- •Трассировка растровых рисунков
- •Точки вдоль границы
- •Сложная фигура и клип Два подхода
- •Цикл по всем дочерних объектов
- •Локальные и глобальные координаты
- •Обработка события для звука
- •Загрузка фильмов
- •Использование Переменных
- •Локальные переменные
- •Типы функций
- •Обработчики событий
- •Описание проекта
- •Загрузка Flash-фильмов
- •Работа с рисунками
- •Увеличение рисунка
- •Маски клипов
- •Звуковые файлы
- •Баннеры
- •Компоненты Обзор
- •Текстовые поля
- •Форматирование
- •Работа с базой пользователей
- •Текст-ссылка
- •Регистрация
- •Радиокнопки
- •Выпадающий список
- •Выключатели
- •Формат компонентов
- •Добавление пользователя
- •Индивидуальное задание
- •Лабораторная работа № 9 «Рисование из программы»
- •Отрезки
- •Заливки Одноцветная заливка
- •Добавление методов к MovieClip
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Локальные и глобальные координаты
В цикле перебираются все точки, адреса которых были ранее записаны в массив points. Координаты такой точки, _x и _y, заданы относительно родителя, то есть, клипа-камня. Это локальные координаты.
В то же время для функции hitTest надо задать абсолютные (глобальные) координаты на монтажном столе. Для перевода локальных координат в глобальные используется метод клипа localToGlobal. Он принимает объект p, имеющий свойства x и y. Глобальные координаты возвращаются в том же объекте.
Если очередная точка попала в область клипа obj, начинается проигрывание клипа Точка. Если посмотреть «внутрь» этого клипа, видно, что при проигрывании (начиная с кадра 2) параметр Alpha цвета точки (непрозрачность) постепенно меняется от 0 до 100% и снова до нуля (работает анимация формы). Одновременно проигрывается звук удара.
Теперь нужно добавить реакцию на столкновение в код клипа car (желтая машина). Как и в предыдущем примере, мы будем запоминать предыдущее положение машины и, если произошло столкновение, возвращать машину в это место.
Выделите машину и добавьте в обработчик события load код
_xOld = _x;
_yld = _y;
_rotOld = _rotation;
и функцию
function check(){
if ( _root.stone4.hits(this) ) {
_x = _xOld;
_y = _yOld;
_rotation = _rolOld;
}
}
В самое начало обработчика enterFrame вставьте вызов этой функции и запоминание новых координат
check();
_xOld = _x;
_yOld = _y;
_rotOld = _rotation;
Проверьте клип (машина не должна заезжать на выбранный камень).
Добавьте аналогичные коды к клипам остальных камней.
Проверьте ролик и сохраните с именем ЛР6_3.fla
Обработка события для звука
Остается последний штрих: когда машина достигла финиша (клипа с именем finish), проигрывается музыка и, когда музыка заканчивается, машина возвращается на стартовую позицию.
Понятно, что начальное положение машины надо запомнить в обработчике load. Для этого введем переменные _x0, _y0 и _rot0.
_x0 = _x; _y0 = _y; _rot0 = _rotation; |
Проигрывание звука можно добавить в функцию check (или написать другую функцию).
Присвойте звуку cheers.wav из библиотеки кодовое имя cheers (пункт Linkage... в контекстном меню). Добавьте в конец функции check код для проигрывания звука при пересечении клипов car и finish:
if ( this.hitTest(_root.finish) ) {
snd = new Sound();
snd.attachSound("cheers");
snd.start(0,1);
}
Когда проигрывание звука заканчивается, нужно вернуть машину в исходное положение. Для этого объекту-звуку надо задать обработчик события soundComplete (завершение проигрывания звука).
Добавьте после строчки snd.start(0,1); код
snd.onSoundComplete = function() {
_x = _x0; _y = _y0;
_rotation = _rot0;
}
При проверке обнаруживается, что при достижении финиша звук совсем не такой, какой мы слышим при проигрывании из библиотеки.
Дело в том, что функция check вызывается при каждой смене кадра, то есть 50 раз в секунду (для данного клипа). Причем каждый раз запускается новая копия звука, которая смешивается с предыдущими.
Чтобы исправить ситуацию, надо как-то запомнить, что звук уже проигрывается, и не запускать новую копию. Для этого используем новую логическую переменную soundOn. Она будет равна true, когда звук играет.
Добавьте строчку
soundOn = true;
после команды snd.start(0,1);.
В начале обработчика load и в обработчике onSoundComplete вставьте строчки
soundOn = false;
Просмотрите результат и сохраните файл ЛР6_3.fla
Индивидуальное задание
Для фильма, созданного вами ранее, добавьте новую сцену и обеспечьте программную реализацию управления столкновением объектов вашего фильма, выдачу звуковых сигналов.
Сохраните фильм с именем Фамилия_ИДЗ_6.fla
Лабораторная работа № 7
«Создание фильма с использованием внешних файлов»
Уровни
Сейчас
мы построим ролик с телевизором, который
управляется с пульта дистанционного
управления. Телевизор включается щелчком
по кнопке
После этого можно переключать каналы
цифровыми кнопками и кнопками-стрелками.
Особенность этого ролика в том, что фильмы, которые показываются по разным каналам — это внешние ролики, находящиеся в других SWF-файлах. Таким образом, на сцене могут находиться одновременно несколько разных фильмов, которые загружаются при проигрывании.
Каждый фильм находится на отдельном уровне, который имеет свой номер. Уровень 0 — это главный монтажный стол данного ролика, остальные уровни имеют номера 1, 2 и т.д. Уровни с большим номером находятся над уровнями с меньшим номером и перекрывают их. Стрелка на рисунке показывает направление взгляда.
Для обращения к уровню с номером N используют условное имя _levelN (level — уровень). Адрес _level0 совпадает с адресом _root данного фильма. Однако каждый загруженный фильм имеет свой главный монтажный стол _root, не зависящий от основного.
Загружаемые ролики могут иметь разную частоту смены кадров, но при проигрывании всегда используется частота, установленная для главного монтажного стола _level0.
