Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на Flash

  Все выпуски  

Flash для начинающих Синхронное воспроизведение звуков


Уважаемые читатели!
Свежие выпуски других наших рассылок размещаются на нашем новом сервисе "wYw.RU Мир Друзей" в разделе "Статьи" (http://wyw.ru/articles.php).

Зарегистрируйтесь и Вы сможете:
- Обсуждать рассылки с другими читателями;
- Задавать вопросы авторам рассылок;
- Создавать свои опросы, чтобы узнать мнение других читателей
- ...и многое другое.

Регистрация займет у Вас 1 минуту. Ждем Вас на wYw.RU!

С уважением,
Екатерина
ведущая рассылок
"ИнфоСтарз"


Синхронное воспроизведение звуков


Сегодня мы разберём с вами, как можно организовать синхронное воспроизведение звуков, чтобы, если 1 звук играл-играл и остановился на каком-то месте, другой звук начинал своё воспроизведение с той же минуты/секунды, на котором остановился предыдущий звук. В качестве инструмента программирования мы будем использовать ActionScript 2.0

 

 

История вопроса


Этот вопрос уходит своими корнями в далёкое прошлое, когда в рубрике «Вопрос-ответ» был задан вопрос о синхронизации звука. Автор этого вопроса, спрашивал, цитирую:

 

 

Цитата:
Вопрос следующий: Представте...сидит оркестр, как сделать, что бы при нажатии на любой инструмент он начинал исполнять
свою партию!А если на следующие другие, то они должны включаться в том же месте где играет первый!!!

 

И некто, admin помог ему в решении этого вопроса. А теперь, возможность узнать ответ на него есть и у вас =)

 

Что нам нужно?


Нам нужно создать в .fla проекте 2 кнопки с именами sound1_mc и sound2_mc, а потом импортировать в библиотеку проекта, 2 звука, с именами sound1 и sound2. Эти имена звуков обязательно должны быть указаны в вкладке Linkage, а так же, необходимо будет поставить галочки напротив надписей «Export for ActionScript» и «Export in first frame».

 

Половина дела сделана, теперь осталось написать код программы =)

 

Необходимая функция


Так, как мы будем работать со звуком, нам придётся работать с объектами Sound, которые и отвечают в Flash за работу со звуком. Ключевой функцией, которую мы будем использовать в нашем уроке станет функция, которая запускает проигрывание звуков:

 

_sound.start(_number);

Где, _sound — это объект Sound, а _number — это цифровое значение в миллисекундах, с которого начнётся проигрывание звука.

 

Код программы


Stage.scaleMode = "noScale";
Stage.align = "TL";
//
var my1_sound:Sound = new Sound(this.sound1_mc);
my1_sound.attachSound("sound1");
var my2_sound:Sound = new Sound(this.sound2_mc);
my2_sound.attachSound("sound2");
//Делаем, чтобы когда мелодия начинала проигрываться заново при окончании
my1_sound.onSoundComplete = my2_sound.onSoundComplete=function () {
 this.start();
};
//Создаём переменную, в которую будем запоминать, какой сейчас играет звук
var current_sound:Sound;
//Запоминаем, какой звук соответствует какой кнопке
this.sound1_mc.var_sound = my1_sound;
this.sound2_mc.var_sound = my2_sound;
//
//Создаём обработчик события onRelease, каждый раз при его срабатывании
//будет запускаться функция _root.changeCound_func, в которую будет
//передаваться параметр this.var_sound. Эти параметры мы присвоили кнопкам
//чуть выше
this.sound1_mc.onRelease = this.sound2_mc.onRelease = function() {
 _root.changeCound_func(this.var_sound);
};
//
function changeCound_func(new_sound:Sound) {
 trace("Запускаем новый звук");
 //Создаём переменную, в которую будем запоминать, на какой позиции сейчас
 //находится играющий звук
 var _soundPos:Number
 //Если до этого какой-нибудь звук был запущен, то присваеваем позицию,
 //на которой находится этот звук переменной
 if(_root.current_sound){
  _soundPos = _root.current_sound.position;
 }else{
  //Если никакого звука до этого не было запущено, то начинаем
  //проигрывание с 0
  _soundPos = 0;
 }
 trace("Начинаем проигрывать с позиции "+_soundPos);
 //Останавливаем предыдущий звук
 _root.current_sound.stop();
 //Включаем следующий звук. Деление на 1000 нужно потому, что свойство position задаётся в
 //миллисикундах, а в фукнцию start время старта проигрывания передаётся в секундах.
 new_sound.start(_soundPos/1000);
 //Запоминаем новый звук, в переменной current_sound, потому что теперь
 //он проигрывается
 _root.current_sound = new_sound;
}

 

Не поверите, но вот и всё. По-идее, у вас должна была получиться такая же работающая флешка, как и у меня, где при нажатии на одну из кнопок, начинал проигрываться звук с того места, на котором закончил играть предыдущий звук.

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

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

По материалам сайта http://www.flashist.ru



Вам понравилась рассылка?
(голосование возможно только из письма рассылки)
  • понравилась
  • не понравилась
  • средне



  • В избранное