5
фев
  Учимся работать со звуком 0 баллов
 

Потоковое/Не потоковое аудио


Во Flash предусмотрены возможности работы как с потоковым, так и с не потоковым аудио. Для начала разберём, как создаются объекты Sound:

var url_sound:Sound = new Sound();

Собственно вот мы и создали объект url_sound. Обратите внимание, что _sound — это суффикс объектов класса Sound, как и _mc для Movie Clip, и _txt для Text Field. Ещё раз напоминаю, на всякий случай, что суффиксы позволяют упростить и ускорить набор кода, т.к. автоматически выдают список всех встроенных функций и методов после точки «.» поставленной за нужным суффиксом.

Загрузка аудио файлов через loadSound


loadSound(URL,isStreaming)

1. URL — адрес подгружаемого аудио файла;
2. isStreaming — флаг, показывающий будет подгружаемое аудио потоковым или обычным. Может принимать значения либо true, либо flase. Потоковое — true. Обычное — false. Основной особенностью потокового аудио является то, что мы можем начать его прослушивание до полной загрузки файла. Например на всем известном MySpace используется именно потоковое аудио.

Основные свойства и методы Sound объектов во Flash


1. getBytesLoaded() — показывает сколько байт уже загрузилось;
2. getBytesTotal() — показывает общий размер аудио файла. К слову ,чтобы узнать сколько байт ещё осталось загрузить, нужно просто из второго параметра вычесть первый:

trace(“Осталось загрузить ещё байт “+(url_sound.getBytesTotal()-url_sound.getBytesLoaded()));

3. position — показывает в миллисекундах время проигрываемого сейчас фрагмента:

trace(“Сейчас проигрывается секунда номер “+(url_sound.position/1000));

4. duration — показывает общую продолжительность аудио файла в миллисекундах. Работая с потоковым аудио, следует учитывать, что duration показывает длительность уже загруженного фрагмента файла, а не общую продолжительность файла. Т.е. если длина вашего файла 10 секунд, а вы загрузили только 3 секунды, то duration будет показывать значение 3000. Примерную длину аудио файла можно вычислить следующим образом:

trace(“Общая длина файла примерно “+(url_sound.duration*getBytesTotal()/getBytesLoaded()/1000)+” секунд”);

5. start(secondsOffset,loops) — начинает воспроизведение файла. В случае с потоковым аудио, воспроизведение начинается автоматически после начала загрузки. secondsOffset — с какой секунды нужно начать воспроизведение. Указывается именно в секундах. loops — количество повторов воспроизведения трека. Так же можно использовать сокращённую запись start();
6. stop() — останавливает воспроизведение.

Подключаем звук из библиотеки


Так же есть возможность работать со звуком напрямую из вашей библиотеки Library. Для этого нужно использовать следующую запись:

lib_sound.attachSound(idName)

1. lib_sound — это имя Sound объекта, к которому мы прикрепляем нужный аудио файл из библиотеки. Сам объект lib_sound должен быть предварительно создан;
2. attachSound(idName) — метод прикрепляющий из библиотеки нужный файл. idName — это имя звука, которое задаётся во вкладке Linkage (выбираем нужный объект в библиотеке и жмём на него правой кнопкой мыши).

Когда проигрывание закончилось Для того, чтобы отловить окончание воспроизведения файла, существует событие onSoundComplete. Например, следующая запись будет запускать сначала воспроизведение файла, сразу после окончания:

url_sound.onSoundComplete = function() {
        trace(“Трек закончился и начинает проигрываться заново”);
        this.start();
};

Описание получилось очень большим, но вроде, понятным, поэтому всё, что мне остаётся, так это выложить исходник и пример к уроку =)

Сама флешка » | Исходник »

Комментарии (3)   Автор: admin
Комментарии
JEX
21.05.09 | 20:16
0 баллов

Я работаю во flash cs4(a.s.3) и меня со звуком возникает такая проблема:
ArgumentError: Error #2068: Недопустимый звуковой файл.
at flash.media::Sound/play()
at player/dg()
Ни с одним звуковым файлом не работает(в отличии от предыдущих версий флэш)
Даже хз что теперь делать((
Код выкладывать не буду, т.к. там много лишнего и всё сделано при помощи оф сайта. Т.ч. ошибок там нету =) Можете подсказать возможные причины?

JEX
23.05.09 | 18:09
0 баллов

извините, я просто так увлёкся кодом что положил музыку не в ту папку))
проблема решена

leegun
09.06.10 | 11:04
0 баллов

Спасибо дошло)

 
 
 
 

Последние комментарии

Полезные ссылки

Реклама сайтов

Купальники известный марки Amarea
В широком ассортименте мебель для ванной в Вашу квартиру
Сайт о фильмах любых жанров и направлений
проектирование пожаротушения на производстве для обеспечения пожарной безопасности