SoundSkin - ещё одна библиотека на ActionScript 3.0, которая здорово облегчает работу со звуком в flash-приложениях. Возможно, что SoundSkin даже удобнее в использовании, чем ранее упоминавшаяся ASaudio.
Рассмотрим на конкретных примерах основы работы с библиотекой SoundSkin...
Естественно, нам нужна сама библиотека. Скачать её можно по ссылке, приведённой в самом начале данного поста. А ещё проще будет взять её из архива с исходниками, ссылку на которые вы можете найти в конце урока...
С помощью SoundSkin можно управлять воспроизведением как встроенных в flash-проект звуков, так и внешних mp3-файлов.
I.) Работа со встроенными звуковыми файлами.
Первым делом, надо встроить сам аудио-файл в библиотеку флеш-проекта и настроить его для дальнейшего использования:
а.) Импортируем нужный нам аудио-файл в библиотеку flash-проекта.
б.) Находим импортированный ранее звук в библиотеке проекта, наводим на него курсор мышки и правым кликом мышки вызываем контекстное меню.
в.) В контекстном меню нас интересует только пункт «Свойства...». Жмём его...
г.) Появляется окно «Свойства звука». В этом окне ставим галочку у пункта «Экспорт для ActionScript», а в поле ввода «Класс» вводим название класса (я дал ему имя «MySound»).
д.) Подтверждаем внесённые изменения.
Теперь переходим к коду...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
запускаем воспроизведение звука
*/
sound.play();
Вот и всё! Это вполне рабочий пример. Но чтобы сделать пример ещё и наглядным, немного допишем код...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
кнопка, начинающая воспроизведение звука
*/
btn_start.addEventListener(MouseEvent.CLICK, onStart);
function onStart(event:MouseEvent):void
{
sound.play();
}
Результат:
Остановить воспроизведение звука можно с помощью метода stop().
Код ActionScript 3.0:
sound.stop();
Но есть в SoundSkin метод, который прекрасно заменяет собой и метод play(), и метод stop(). Это метод togglePlayback(), который работает как переключатель: он останавливает воспроизводимый и начинает воспроизведение остановленного аудио-файла.
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
кнопка, отвечающая за воспроизведение звука
*/
btn_start.addEventListener(MouseEvent.CLICK, onStart);
function onStart(event:MouseEvent):void
{
sound.togglePlayback();
}
Если аудио-файл надо проиграть какое-то количество раз (например, вам требуется зациклить фоновую мелодию в игре), то используем второй параметр конструктора объекта SoundSkin...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound(), 1000);
/*
запускаем воспроизведение звука
*/
sound.play();
Теперь звук будет повторён 1000 раз. Такого же эффекта можно достигнуть и с помощью специального свойства loops...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
устанавливаем количество повторов звука
*/
sound.loops = 1000;
/*
запускаем воспроизведение звука
*/
sound.play();
Если аудио-файл надо воспроизводить не с самого начала, то используем 3-й параметр конструктора объекта SoundSkin...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound(), 1, 5000);
/*
запускаем воспроизведение звука
*/
sound.play();
Теперь звук будет воспроизведён только один раз и при этом воспроизведение звука начнётся с 5 секунды.
Настройка громкости осуществляется с помощью свойства volume (может принимать значение от 0 до 1).
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
настройка громкости
*/
sound.volume = 0.5;
/*
запускаем воспроизведение звука
*/
sound.play();
В данном случае звук будет воспроизводится с 50%-ной громкостью.
Настройка панорамирования звука осуществляется с помощью свойства pan (может принимать значение от -1 до 1).
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin(new MySound());
/*
настройка панорамирования
*/
sound.pan = -1;
/*
запускаем воспроизведение звука
*/
sound.play();
II.) Работа с внешними MP3-файлами.
Тут тоже всё довольно просто и понятно. Для загрузки mp3-файла применяется метод load.
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin();
/*
загружаем mp3-файл
*/
sound.load("content/kuranty.mp3");
/*
кнопка, начинающая воспроизведение mp3-файла
*/
btn_start.addEventListener(MouseEvent.CLICK, onStart);
function onStart(event:MouseEvent):void
{
sound.togglePlayback();
}
Результат:
Ещё одна популярная задача - отслеживание прогресса загрузки аудиофайла. С помощью SoundSkin это реализуется невероятно просто. Но сперва нам надо провести некоторые приготовления... Давайте создадим на главной временной шкале flash-ролика мувиклип mc_fon (серый прямоугольник размером 300 Х 20), а внутри мувика mc_fon создадим ещё один мувик с именем mc_percent (красный прямоугольник размером 300 Х 20). Как вы, наверно, догадались, эти мувики будут показывать прогресс загрузки mp3-файла. А теперь переходим к коду...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin();
/*
изначальные настройки мувиков mc_fon и mc_percent
*/
mc_fon.visible = false;
mc_fon.mc_percent.scaleX = 0;
/*
кнопка, начинающая воспроизведение mp3-файла
*/
btn_start.addEventListener(MouseEvent.CLICK, onStart);
function onStart(event:MouseEvent):void
{
btn_start.visible = false;
mc_fon.visible = true;
sound.load("content/lenin.mp3");
addEventListener(Event.ENTER_FRAME, onEnterFrames);
}
/*
отслеживаем прогресс загрузки
*/
function onEnterFrames(event:Event):void {
mc_fon.mc_percent.scaleX = sound.percentLoaded;
/*
начинаем воспроизведение после окончания загрузки
*/
if(sound.percentLoaded == 1){
removeEventListener(Event.ENTER_FRAME, onEnterFrames);
sound.play();
}
}
Информацию о проценте загруженных данных мы получаем от свойства percentLoaded. Правда, получаем не совсем проценты, а число типа Number в диапазоне от 0 (0%) до 1 (100%).
Результат:
Часто требуется показывать не только процент загруженных данных, но и текущий прогресс воспроизведения звука. В этом нам поможет свойство percentPlayback (возвращает процент воспроизведённых аудио-данных в виде числа с плавающей точкой в диапазоне от 0 (0%) до 1 (100%)).
Код ActionScript 3.0:
/*
импорт классов
*/
import com.gmac.sound.SoundSkin;
/*
создаём объект класса SoundSkin
*/
var sound:SoundSkin = new SoundSkin();
/*
изначальные настройки мувиков mc_fon и mc_percent
*/
mc_fon.visible = false;
mc_fon.mc_percent.scaleX = 0;
/*
кнопка, начинающая воспроизведение mp3-файла
*/
btn_start.addEventListener(MouseEvent.CLICK, onStart);
function onStart(event:MouseEvent):void
{
btn_start.visible = false;
mc_fon.visible = true;
sound.load("content/lenin.mp3");
addEventListener(Event.ENTER_FRAME, onEnterFrames);
}
/*
отслеживаем прогресс загрузки
*/
function onEnterFrames(event:Event):void
{
mc_fon.mc_percent.scaleX = sound.percentLoaded;
/*
начинаем воспроизведение после окончания загрузки
*/
if (sound.percentLoaded == 1)
{
removeEventListener(Event.ENTER_FRAME, onEnterFrames);
addEventListener(Event.ENTER_FRAME, onEnterFrames_2);
sound.play();
}
}
/*
отслеживаем прогресс воспроизведения
*/
function onEnterFrames_2(event:Event):void
{
mc_fon.mc_percent.scaleX = sound.percentPlayback;
}
Результат:
Естественно, все методы и свойства, которые применимы при работе с встроенным звуком, будут доступны и при работе с загруженным звуковым файлом (настройка громкости, панорамирование и т. д.).
Выше я перечислил далеко не все возможности библиотеки SoundSkin, а только наиболее востребованные. Впрочем, и этого вполне достаточно для удобной работы со звуком в флеш-проектах.
Скачать исходники к данному посту можно здесь (под Adobe Flash CS 5). Обращаю ваше внимание на то, что в исходник не включены mp3-файлы. Поэтому вам надо использовать свои mp3-файлы при тестировании примеров из исходников.