Потоковая загрузка фоновой музыки на AS 2.0

Если фоновая музыка занимает в флеш-проекте много места, то можно попробовать грузить её динамически. При этом фоновая музыка должна быть зациклена - это, можно сказать, общепринятая практика. Кроме этого, для отслеживания процессов загрузки и воспроизведения стоит сделать соответствующие индикаторы. Этих индикаторов будет два:

- индикатор загрузки звука (в моём случае это будет чёрный прямоугольный MovieClip размером 200 на 10 px и названный buf);

- индикатор воспроизведения звука (это будет красный прямоугольный MovieClip размером 200 на 10 px и названный pos);

Оба индикатора будут помещены внутрь мувика cont, который будет светло-серого цвета и того же размера, что и вложенные в него индикаторы.

Всё остальное проделывается с помощью кода ActionScript 2.0.

Код ActionScript 2.0:

/* первоначальное состояние индикаторов */ cont.buf._xscale = 0; cont.pos._xscale = 0; /* скрываем индикаторы */ cont._visible = false; /* создаём объект Sound */ var snd:Sound = new Sound(); /* устанавливаем время буферизации звука (в секундах) */ _soundbuftime = 30; /* кнопка, начинающая загрузку звукового файла */ btn.onPress = function() { /* делаем индикаторы видимыми */ cont._visible = true; /* прячем кнопку */ btn._visible = false; /* грузим файл в потоковом режиме */ snd.loadSound("lenin.mp3", true); }; /* в каждом кадре перерисовываем наши индикаторы */ onEnterFrame = function () { var p:Number = snd.getBytesLoaded()/snd.getBytesTotal()*100; cont.buf._xscale = p; cont.pos._xscale = p*(snd.position/snd.duration); }; /* зацикливаем воспроизведение звука */ snd.onSoundComplete = function() { snd.start(); };

У меня получилось следующее:

Загрузить Adobe Flash Player

Работу данного скрипта стоит тестировать на более-менее крупных звуковых файлах и в сети. В противном случае, загрузка файла произойдёт почти мгновенно и вы не заметите работы индикаторов.

Исходник к данному уроку под Macromedia Flash 8 скачать можно здесь.

Автор: admin

Дата добавления: 2011-12-02

Просмотров: 4998

Рейтинг поста: +6-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-06-17
Mariya, достаточно просто убрать код, связанный с кнопкой.
То есть, вам нужен примерно такой код:
/* первоначальное состояние индикаторов */ cont.buf._xscale = 0; cont.pos._xscale = 0; /* создаём объект Sound */ var snd:Sound = new Sound(); /* устанавливаем время буферизации звука (в секундах) */ _soundbuftime = 30; /* грузим файл в потоковом режиме */ snd.loadSound("lenin.mp3", true); /* в каждом кадре перерисовываем наши индикаторы */ onEnterFrame = function () { var p:Number = snd.getBytesLoaded()/snd.getBytesTotal()*100; cont.buf._xscale = p; cont.pos._xscale = p*(snd.position/snd.duration); }; /* зацикливаем воспроизведение звука */ snd.onSoundComplete = function() { snd.start(); };
Комментатор
Комментарий добавил(а): Mariya
Дата добавления: 2012-06-17
как написать,
чтобы музыка запускалась при открытии swf,
а не пока нажмешь на кнопку?
Комментатор
Комментарий добавил(а): Максим
Дата добавления: 2011-12-02
snd.onSoundComplete = function() {
snd.start();
}

Вот оно! То, что я искал! Автору респект!

^_^ b
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика