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 воспроизводит очередной кадр фильма. Это сделано для того, чтобы лишний раз не перерисовывать экран, если код что-то изменит в изображении.