Читаем Macromedia Flash Professional 8. Графика и анимация полностью

запускает воспроизведение звука, привязанного к клипу 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 возвращает общую продолжительность звука, также в миллисекундах.

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

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

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

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

clearinterval(<Идентификатор таймера>);

Например:

clearinterval(timerID2);

Перейти на страницу:

Похожие книги