Обратите внимание, что имя звука описывается при помощи синтаксиса this._name. Это значит, что имя клипа будет являться и именем звука. Если клип называется «instance 1», код попытается воспроизвести звук с именем «instance 1». Первое имя «instance 1» соответствует имени клипа на рабочем поле, второе имя «instance 1» является именем соответствующего звука в библиотеке. Эта схема работает только в том случае, если имена полностью совпадают.
Преимущество данного способа заключается в том, что один и тот же клип может использоваться на рабочем поле для воспроизведения различных звуков. Имя звука берется из имени копии клипа, а не из переменной ActionScript, что делает такой клип более универсальным.
Анимация начинается после перехода клипа к следующему кадру. В конце анимации клип возвращается к первому кадру, а находящаяся в нем команда stop() остановит его повторное воспроизведение.
В случае отдельных звуков одна и та же кнопка находится во всех кадрах, что дает пользователю возможность запустить воспроизведение нового звука даже во время воспроизведения анимации клипа.
Клипы для басов и отдельных звуков аналогичны. Основное их различие состоит в том, что первый звук должен периодически повторяться. Для этого в команду start требуется добавить два параметра: смещение от начала звука и количество циклов. В нашем случае смещение не нужно, следовательно, оставим его значение равным 0. Периодическое повторение звука необходимо, поэтому соответствующий параметр должен иметь очень большое значение.on (press) {
// Проигрываем звук по названию клипа.
bassloop = new Sound();
bassloop.attachSound(this._name);
bassloop.start(0,9999);
// Начинаем анимацию.
gotoAndPlay(2);
}Еще одно отличие между отдельными звуками и басами заключается в том, что цикл басов можно отключить. Для этого кнопке переключателя цикла басов начиная с кадра 2 необходимо назначить другой сценарий. Сценарий прекратит воспроизведение звука и вернет ролик к кадру 1.
on (press) {
// Останавливаем проигрывание звука.
bassloop = new Sound();
bassloop.stop(this._name);
// Прекращаем анимацию.
gotoAndStop(l);
}Сценарии кнопки для цикла барабанного боя немного сложнее. Прежде чем начинать воспроизведение одного такого цикла, необходимо убедиться в том, что другие циклы этой группы отключены. Сценарий проверяет звуки, начиная с «drum loop 1» и заканчивая «drum loop 6», и отключает каждый из них. Он также задает возврат каждого клипа переключателя к кадру 1, чтобы остановить анимацию. После этого запускается воспроизведение выбранного цикла.
on (press) {
// Останавливаем любой другой цикл барабанного боя.
drumloop = new Sound();
for(i=1;i<=6;i++) {
_root["drum loop"+i].gotoAndStop(1);
drumloop. stop("drum loop"+i);
}
// Начинаем проигрывать выбранный звук.
drumloop.attachSound(this._nane);
drumloop.start(0, 9999);
// Воспроизводим анимацию.
gotoAndPlay(2);
}Другой код кнопки цикла барабанного боя аналогичен коду цикла басов. Он прекращает воспроизведение звука и возвращает клип обратно к кадру 1.
on (press) {
// Останавливаем проигрывание звука.
drumloop = new Sound();
drumloop.stop(this._name);
// Останавливаем анимацию.
gotoAndStop(l);
}К сведению
Не забудьте присвоить каждой из 18 кнопок уникальное имя и сопоставить это имя с именем соответствующего звука в библиотеке. Кроме того, название звука необходимо задать в диалоговом окне Symbol Linkage Properties (рис. 7.9).