Вход

Просмотр полной версии : Помогите со звуком!


bizz_gc
26.10.2007, 14:26
Уважаемые знатоки!
На работе напрягли озвучить ролик. До этого с AS имел знакомство на уровне... на низком уровне. Так вот. Проблема: Есть фоновая музыка, есть кнопка, вкл и откл эту музыку. Есть голос, озвучивающий текст. Есть и для него кнопка.

Загрузка музыки

back_sound = new Sound(_root.back_snd);
back_sound.attachSound("back_sound");
back_sound.setVolume(10);
back_sound.start(0, 99999);

Загрузка голоса

a1_sound = new Sound(_root.a1_snd);
a1_sound.attachSound("a1");
a1_sound.setVolume(100);
a1_sound.start(0,1);

Код на кнопках

on (release) {
if(s == 1){
a1_sound.stop();
s = 0;
} else if(s == 0){
a1_sound.start(0, 9999);
s = 1;
}
}

s - переменная, стоящая в отдельном слое

var s = 1;

Проблема в том, что при нажатии на любую из кнопок отключаеца весь звук. При повторном нажатии воспроизводится звук, за который отвечает кнопка...
Поможите чем можите...
С уважением.

Kikasso
26.10.2007, 14:51
back_sound = new Sound(_root.back_snd);
У вас там запятая стоит, все звуки создаются с "опорой" на _root, и выключая один звук вы гасите все.
Разумеется, мувиклип клип _root.back_snd должен существовать.

bizz_gc
26.10.2007, 14:55
Ой, спасибо.
Исправил, все равно не работает... вернее проблема остается...
Пробывал вводить разные переменные, тоже не помогает... чьёрт побьери.

Wolsh
26.10.2007, 18:36
У меня ваш код работает так как Вам надо. Соотв., у Вас нет тех клипов, в которых Вы пытаетесь создать объекты Саунд - _root.a1_snd и его другана _root.back_snd. В ситуации, когда я эти клипы удаляю, и получается описанная Вами проблема. А теперь цитата из Kikasso:
Разумеется, мувиклип клип _root.back_snd должен существовать.

bizz_gc
26.10.2007, 18:44
Спасибо, разобрался!

Kikasso
27.10.2007, 00:59
Допустим вы написали
my_snd.setVolume(20);
Ситуация такова, что громкость установится не только данному звуку, но и всем звукам с "опорой" на тот же клип. Поэтому полезно звуки "раскидывать" по пустым клипам:
var back_sound:Sound = makeSound( _root, 'back_sound' );

function makeSound(mc:MovieClip, id:String ):Sound{
// создаем новый Sound в новеньком пустом клипе
var snd:Sound = new Sound( mc.createEmptyMovieClip( '__' + id, mc.getNextHighestDepth() ) );
snd.attachSound( id );
}
Я передал _root параметром, потому что клипы надо создавать в том swf, где библиотека со звуками. Если вы его подгружаете, то в нем и надо создавать клипы, и это уже будет совсем не _root