Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ActionScript 2.0 ЛР.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Локальные и глобальные координаты

В цикле перебираются все точки, адреса которых были ранее записаны в массив points. Координаты такой точки, _x и _y, заданы относительно родителя, то есть, клипа-камня. Это локальные координаты.

В то же время для функции hitTest надо задать абсолютные (глобальные) координаты на монтажном столе. Для перевода локальных координат в глобальные используется метод клипа localToGlobal. Он принимает объект p, имеющий свойства x и y. Глобальные координаты возвращаются в том же объекте.

Если очередная точка попала в область клипа obj, начинается проигрывание клипа Точка. Если посмотреть «внутрь» этого клипа, видно, что при проигрывании (начиная с кадра 2) параметр Alpha цвета точки (непрозрачность) постепенно меняется от 0 до 100% и снова до нуля (работает анимация формы). Одновременно проигрывается звук удара.

Теперь нужно добавить реакцию на столкновение в код клипа car (желтая машина). Как и в предыдущем примере, мы будем запоминать предыдущее положение машины и, если произошло столкновение, возвращать машину в это место.

  1. Выделите машину и добавьте в обработчик события load код

_xOld = _x;

_yld = _y;

_rotOld = _rotation;

  1. и функцию

function check(){

if ( _root.stone4.hits(this) ) {

_x = _xOld;

_y = _yOld;

_rotation = _rolOld;

}

}

  1. В самое начало обработчика enterFrame вставьте вызов этой функции и запоминание новых координат

check();

_xOld = _x;

_yOld = _y;

_rotOld = _rotation;

  1. Проверьте клип (машина не должна заезжать на выбранный камень).

  2. Добавьте аналогичные коды к клипам остальных камней.

  3. Проверьте ролик и сохраните с именем ЛР6_3.fla

Обработка события для звука

Остается последний штрих: когда машина достигла финиша (клипа с именем finish), проигрывается музыка и, когда музыка заканчивается, машина возвращается на стартовую позицию.

Понятно, что начальное положение машины надо запомнить в обработчике load. Для этого введем переменные _x0, _y0 и _rot0.

  1. Добавьте в начало обработчика load код

_x0 = _x; _y0 = _y; _rot0 = _rotation;

Проигрывание звука можно добавить в функцию check (или написать другую функцию).

  1. Присвойте звуку cheers.wav из библиотеки кодовое имя cheers (пункт Linkage... в контекстном меню). Добавьте в конец функции check код для проигрывания звука при пересечении клипов car и finish:

if ( this.hitTest(_root.finish) ) {

snd = new Sound();

snd.attachSound("cheers");

snd.start(0,1);

}

Когда проигрывание звука заканчивается, нужно вернуть машину в исходное положение. Для этого объекту-звуку надо задать обработчик события soundComplete (завершение проигрывания звука).

  1. Добавьте после строчки snd.start(0,1); код

snd.onSoundComplete = function() {

_x = _x0; _y = _y0;

_rotation = _rot0;

}

При проверке обнаруживается, что при достижении финиша звук совсем не такой, какой мы слышим при проигрывании из библиотеки.

Дело в том, что функция check вызывается при каждой смене кадра, то есть 50 раз в секунду (для данного клипа). Причем каждый раз запускается новая копия звука, которая смешивается с предыдущими.

Чтобы исправить ситуацию, надо как-то запомнить, что звук уже проигрывается, и не запускать новую копию. Для этого используем новую логическую переменную soundOn. Она будет равна true, когда звук играет.

  1. Добавьте строчку

soundOn = true;

после команды snd.start(0,1);.

В начале обработчика load и в обработчике onSoundComplete вставьте строчки

soundOn = false;

  1. Просмотрите результат и сохраните файл ЛР6_3.fla

  • Индивидуальное задание

Для фильма, созданного вами ранее, добавьте новую сцену и обеспечьте программную реализацию управления столкновением объектов вашего фильма, выдачу звуковых сигналов.

Сохраните фильм с именем Фамилия_ИДЗ_6.fla

Лабораторная работа № 7

«Создание фильма с использованием внешних файлов»

Уровни

Сейчас мы построим ролик с телевизором, который управляется с пульта дистанционного управления. Телевизор включается щелчком по кнопке После этого можно переключать каналы цифровыми кнопками и кнопками-стрелками.

Особенность этого ролика в том, что фильмы, которые показываются по разным каналам — это внешние ролики, находящиеся в других SWF-файлах. Таким образом, на сцене могут находиться одновременно несколько разных фильмов, которые загружаются при проигрывании.

Каждый фильм находится на отдельном уровне, который имеет свой номер. Уровень 0 — это главный монтажный стол данного ролика, остальные уровни имеют номера 1, 2 и т.д. Уровни с большим номером находятся над уровнями с меньшим номером и перекрывают их. Стрелка на рисунке показывает направление взгляда.

Для обращения к уровню с номером N используют условное имя _levelN (level — уровень). Адрес _level0 совпадает с адресом _root данного фильма. Однако каждый загруженный фильм имеет свой главный монтажный стол _root, не зависящий от основного.

Загружаемые ролики могут иметь разную частоту смены кадров, но при проигрывании всегда используется частота, установленная для главного монтажного стола _level0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]