Преимущества использования кода ActionScript для управления звуками в отличие от помещения их в кадры состоит в том, что ActionScript дает вам гораздо больше возможностей управления. Вы можете изменить уровень звука или панорамирование в любой момент. Кроме того, вы не обязаны начинать воспроизведение звука с начала – вы можете начать с любого места. Например, вы можете начать звук, имеющий продолжительность 4 секунды, с третьей секунды, и в результате вы услышите последнюю секунду звука. В этом разделе мы рассмотрим три примера управления звуками с помощью ActionScript.
Управление звуками, основанное на скорости объекта
Для нашего первого примера откройте файл ball.fla из папки Chapter12 на CD. В этом файле вы увидите мяч и четыре стены. Мячу дана начальная скорость, и он падает под действием гравитации. В результате мяч отскакивает от стен, как если бы это был баскетбольный мяч, до тех пор, пока не остановится. Этот файл использует звуковой эффект с именем файла bounce.wav, с идентификатором bounce. Уровень звука зависит от силы столкновения мяча с каждой стеной. Панорамирование звука – то есть соотношение и значение уровня, воспроизводимого каждым динамиком – зависит от положения мяча по x. Вы уже видели код ActionScript, используемый для отскока мяча в Главе 4, «Основы физики»; Главе 5, «Обнаружение столкновений»; и Главе 6, «Реакция на столкновения». Новой в этом файле является функция playSound(), код для которой представлен ниже.
1 function playSound(x,speed){
2 if (soundOn){
3 var ballX =x-left;
4 var factor =ballX/(right-left);
5 var pan =-100+factor*200;
6 var maxSpeed =15;
7 var minSpeed =1;
8 var speed =Math.abs(speed);
9 var factor =speed/(maxSpeed-minSpeed);
10 if (speed<minSpeed){
11 var factor =0;
12 }
13 var volume =factor*100;
14 if (volume>0){
15 bounce =new Sound();
16 bounce.attachSound("bounce");
17 bounce.setPan(pan);
18 bounce.setVolume(volume);
19 bounce