Чтение онлайн

ЖАНРЫ

Macromedia Flash Professional 8. Графика и анимация

Дронов В. А.

Шрифт:

Управление звуковым сопровождением фильма

Для управления звуковым сопровождением фильма служат экземпляры объекта sound. (О работе со звуком во Flash см. главу 17.) Эти экземпляры создаются с помощью выражений, имеющих следующий формат:

<Переменная> = new Sound([<Клип, звуковым сопровождением которого нужно <управлять>]);

С единственным параметром этому конструктору передается ссылка на клип, звуковым сопровождением которого мы собираемся управлять. Если этот параметр не указан, создается экземпляр объекта,

управляющий звуковым сопровождением всего фильма.

Вот два примера создания разных экземпляров объекта sound:

carSound = new Sound(car);

globalSound = new Sound;

Экземпляр carSound позволяет управлять звуковым сопровождением клипа саг, а экземпляр globalSound — всего фильма.

Объект sound имеет множество свойств и методов. В этом разделе мы рассмотрим некоторые из них.

Метод start запускает воспроизведение звука. Он имеет следующий формат вызова:

<Экземпляр объекта Sound>.start([<Отметка>, <Количество повторов>]);

Этот метод может принимать два необязательных параметра. Первый параметр указывает, с какой отметки начнет воспроизводиться звук; отметка задается как количество секунд, которые Flash отсчитает с момента начала звука. Со вторым параметром передается количество повторов звука. Если ни один параметр не задан, звуковое сопровождение будет воспроизведено один раз с самого начала.

Например, выражение

carSound.start (10, 2);

запускает воспроизведение звука, привязанного к клипу car, с десятисекундной отметки и воспроизводит его два раза.

Метод stop немедленно останавливает воспроизведение звука. Формат его вызова таков:

<Экземпляр объекта Sound>.stop([<Идентификатор образца-звука>]);

В качестве единственного параметра этого метода может быть передано идентификатор сценарного образца-звука, воспроизведение экземпляра которого нужно остановить, в строковом виде. Если метод был вызван без параметра, останавливается воспроизведение всех звуков.

carSound.stop("engineSound");

Это выражение отключает воспроизведение звука engineSound, привязанного к клипу car.

Не принимающий параметров метод getVolume возвращает значение громкости звука. А метод setVolume позволяет задать новое значение громкости звука, переданное в качестве его единственного параметра. Доступны значения от 0 (звук не слышен) до 100 (полная громкость; значение по умолчанию).

carSound.setVolume(mySound.getVolume + 10);

Это выражение увеличивает громкость работы автомобиля на десять единиц.

Пара методов get Pan и set Pan ведут себя так же и позволяют задать панорамирование звука в пространстве. Здесь доступны значения от -100 (звук в левом канале) до 100 (звук в правом канале); значение по умолчанию — 0 (звук "посередине").

carSound.setPan(50);

Объект sound

также поддерживает два свойства, доступные только для чтения. Свойство position возвращает текущую воспроизводимую позицию звука в миллисекундах. А свойство duration возвращает общую продолжительность звука, также в миллисекундах.

Использование таймеров

Во многих случаях нужно выполнять какое-либо действие через равные промежутки времени. Это может понадобиться, например, для создания анимации с помощью сценариев ActionScript или для обновления информации, взятой с удаленного сервера. Для таких задач во Flash предусмотрены таймеры. Поговорим о них.

Таймер создается с помощью действия setinterval. Оно имеет два формата вызова. Вот первый из них:

<Переменная> = setinterval(<Функция>, <Значение интервала>

[, <Список параметров функции, разделенных запятыми>]);

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

А вот второй формат вызова действия setinterval:

<Переменная> = setintervai(<Экземпляр объекта>, <Метод объекта>,

<Значение интервала>

[, <Список параметров метода, разделенных запятыми>]);

Он отличается тем, что вместо функции здесь передается экземпляр какого-либо объекта и его метод.

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

Приведем примеры выражений, создающих таймеры:

timerlDl = setintervai(tick, 1000);

timerID2 = setintervai(car, moveBy, 100, d);

Первое выражение создает таймер, вызывающий функцию tick каждую секунду (1000 миллисекунд). Второе же создает таймер, вызывающий каждые 100 миллисекунд метод moveBy экземпляра объекта car и передающий ему параметр d. Разумеется, и функция tick, и метод moveBy должны быть объявлены прежде, чем будут использованы.

При использовании таймеров нужно иметь в виду следующее. Дело в том, что Flash отмеряет интервалы не очень точно. Он пытается привязать каждый интервал к частоте кадров фильма, если, конечно, это возможно. Если интервал меньше частоты кадров, то он обрабатывается с максимальной точностью, и код вызывается вовремя. Если же интервал больше частоты кадров, то код, связанный с таймером, исполняется только тогда, когда Flash воспроизводит очередной кадр фильма. Это сделано для того, чтобы лишний раз не перерисовывать экран, если код что-то изменит в изображении.

Поделиться с друзьями: