PDA

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


Mnilionic
05.09.2007, 15:07
Регулятор громкости лучше делать на событие онМаусМув или с помощью сетИнтервала

онМаусМув - изменяет звук плавно
сетИнтервала - рывками и не всегда соответствует положению регулятора

У меня 15 объектов саунд, на которые действует общий регулятор громкости. То есть при каждом событии изменения громкости запускается цикл с перечислением всех объектов.

у меня сомнения по поводу оптимальности.
Я правильно делаю?

Wolsh
05.09.2007, 16:36
Нет вообщето, создайте объект var total_sound:Sound = new Sound(_level0);

Mnilionic
05.09.2007, 20:33
что-то не работает. Расскажите подробнее.
У меня в руте есть массив из 15 объектов саунд.

var total_sound:Sound = new Sound(_level0);
total_sound.setVolume(10);

не на что не влияет.

Kikasso
05.09.2007, 21:02
Намек:snd1 = new Sound(_level0);
snd2 = new Sound(_level0);
snd1.setVolume(10);
trace(snd2.getVolume()); //10

Mnilionic
05.09.2007, 21:21
вот убейте не работает у меня

global_volume = 10;
var global_sound:Sound = new Sound(_level0);
//
var SoundLib = new Object();
SoundLib.snd = new Array();
SoundLib.flag = new Array();
function soundLoad(key, file){
SoundLib.snd[key] = new Sound(_level0);
SoundLib.snd[key].onLoad = function(success:Boolean) {
if (success) {
trace(key+" - Загружено");
SoundLib.flag[key] = true;
} else {
trace(key+" - Загрузка не удалась");
SoundLib.flag[key] = false;
}
// грузим следующий
startLoading();
}
SoundLib.snd[key].loadSound(file, false);
}
// после всех загрузок вызывается done()
function done(){
global_sound.setVolume(global_volume);
mc_box._visible = true;
}

Kikasso
05.09.2007, 22:34
В смысле не работает?

Mnilionic
05.09.2007, 23:14
в смысле установка громкости global_sound в функции done не влияет на уровень громкости других объектов саунд в массиве SoundLib.snd

причём если изменять громкость объекта в массиве
SoundLib.snd["sound1"].setVolume(10);
то изменяется громкость только этого объекта.. всё остальные остаются на сотне по прежднему



если закоментировать строку загрузки звука

//SoundLib.snd[key].loadSound(file, false);

то при трассировки и впрямь громкость всех объектов становиться 10

А вот если загрузить в объекты звуки, то громкость изменяется только при обращении непосредственно к каждому объекту. Через родительский мувик или левел не пашет.

Wolsh
05.09.2007, 23:34
Ну так Вы переменную в руте создаете, а обращаетесь из функции.
Пишите _root.global_sound.setVolume(10);
Да и global_volume лучше хранить в руте или глобале

Mnilionic
05.09.2007, 23:41
Wolsh, здесь дело не с видимостью переменных, с ней все в порядке

Wolsh
06.09.2007, 01:59
Посмотрел Ваш код внимательно и вообще ничего не понял. Вы привязываете global_sound к level0, потом начинаете грузить звуки и опять присваиваете их этому объекту... Не знаю, я не ас в таких хитросплетениях, но по-моему там всё неправильно в смысле логики. Имхо :)
А чтобы тупо управлять всеми звуками сразу, создается объект Саунд вообще без параметров.
var global_sound:Sound = new Sound();
Всё, можно регулировать. Всю жизнь этим пользуюсь, а что Вы там с загрузками намудрили, мне в жисть не разобраться.

Mnilionic
06.09.2007, 02:21
Wolsh,
всё предельно просто в руте есть объект звука global_sound, который привязан к нулевому уровню.
так же в руте есть массив SoundLib.snd, в который агружаеся несколько звуковых обектов, и которые так же привязаня к нулевому уровню.
Звуки я гружу не из массива :) я из внешних файлов гружу звуки, а в массив они загружаются и лежат там как в библиотечке :)

из вашей подкаски я узнал, что если звуковые объекты привязану к одному клипу/уровню то все они имеют общий метод setVolume (то бишь изменяя громкость одного из звуков в клипе/уровне меняются все).


оо... сделал без параметрав и заработало - свершилось
Wolsh, спасибо за настойчивость :)

Wolsh
06.09.2007, 02:43
Да всегда пожалуйста. Давить-то я мастак :)
Тут просто такая фишка. Саунд - это не звук. Звук на самом деле это... ну типа часть клипа такая. А Саунд - это только инструмент для управления звуком в данном клипе. Поэтому Вы можете 60 Саундов создать для одного клипа, если хотите - это не звук, а типа ссылка на него (на самом деле не так, но в некоторых проявлениях похоже). Т.е. каждый из них регулирует звук в клипе таком-то. Но звук привязан к клипу, а не к Саунду. Я могу повернуть ручку громкости, Вася может повернуть ручку громкости, и Петя с Катей могут повернуть. Все эти люди - Саунды. А звук просто в усилителе :)
Извините, если чем обидел. Удачи.