PDA

Просмотр полной версии : Как бороться с щелчками при останове звука?


pkfun
26.08.2006, 21:37
Вот, такой код:

var soundSw = false;
var pos:Number = 0;
//создаем кнопку включения/выключения звука
this.attachMovie("sinMusic", "sinMusic", this.getNextHighestDepth());
this.sinMusic._x = 40;
this.sinMusic._y = 40;
this.attachMovie("sinMusicHit", "sinMusicHit", this.getNextHighestDepth());
this.sinMusicHit._x = 40;
this.sinMusicHit._y = 40;
this.sinMusicHit._visible = false;
sinMusic.hitArea = sinMusicHit;
//
//функция которая включает и выключает звук
this.sinMusic.onRelease = function():Void {
if (soundSw == false) {
this._parent;
sinMusic._alpha = 30;
soundSw = true;
pos = snD.position/1000;
snD.stop();
} else {
soundSw = false;
this._parent;
sinMusic._alpha = 100;
snD.start(pos);
}
};
//создаем поле sounD и присоединяем к нему муз. файл из библиотеки
this.createEmptyMovieClip("sounD", this.getNextHighestDepth());
//
//создаем объект для звука Zvk
var snD:Sound = new Sound(sounD);
//
//прикрепляем звук Zvk к полю sounD
snD.attachSound("Zvk");
//
//устанавливаем для звука Zvk уровень громкости 90%
snD.setVolume(90);
snD.start();
//запускаем звук с начала, когда он доходит до конца
snD.onSoundComplete = function():Void {
snD.start();
};


При отключении звука происходят неприятные щелчки. Как бороться? :(
К вопросу прилагаю файл fla. 56 Килобайт. Выполнен для 8 флэш.
15052

etc
26.08.2006, 21:39
что такое this._parent;?

pkfun
26.08.2006, 21:48
Это ошибка в коде. :o
Но на саму функцию эта ошибка не влияет. Кажется.
ps. Как это я ее пропустил....

pkfun
28.08.2006, 16:01
Пробывал изменять сжатие в настройках публикации. Изменял кодеки сжатия, даже включал disabled( в ролик включается оригинальный waw файл).
Еще пробывал снижать, мгновенно, уровень громкости звука.

snD.setVolume(0)
snD.stop();

Все равно при отключении звука, слышен отчетливый щелчок.
Что интересно, этот щелчок слышен и просто при резком сбрасывании уровня громкости. Так что, как я полагаю, дело тут не в отключении звука, а в изменении уровня громкости: если резко уменьшить - получаем неприятный щелчок. Если резко увеличить - щелчка нет.
Еще наблюдение: такое впечатление, что щелчок происходит если отключать звук в определенном месте звуковой дорожки. Может быть в этом месте высокий уровень громкости или еще что-то.... А если попадаем на место с низкой громкостью - отключение происходит без щелчка.

pkfun
28.08.2006, 18:11
Пока остановился на таком варианте:

var soundSw = false;
var pos:Number = 0;
//
//создаем кнопку включения/выключения звука
this.attachMovie("sinMusic", "sinMusic", this.getNextHighestDepth());
this.sinMusic._x = 40;
this.sinMusic._y = 40;
this.attachMovie("sinMusicHit", "sinMusicHit", this.getNextHighestDepth());
this.sinMusicHit._x = 40;
this.sinMusicHit._y = 40;
this.sinMusicHit._visible = false;
sinMusic.hitArea = sinMusicHit;
//
//создаем поле sounD и присоединяем к нему набор звуков
this.createEmptyMovieClip("sounD", this.getNextHighestDepth());
//создаем объект для звука Zvk
var snD:Sound = new Sound(sounD);
//прикрепляем звук Zvk к полю sounD
snD.loadSound("Zvk.mp3", false);
snD.onLoad = function(suc:Boolean) {
if (suc == true) {
//устанавливаем для звука Zvk уровень громкости 100%
snD.setVolume(100);
snD.start();
snD.onSoundComplete = function():Void {
snD.start();
};
sinMusic.onRelease = function():Void {
if (soundSw == false) {
sinMusic._alpha = 30;
soundSw = true;
soundDp = setInterval(soundD, 30);
} else {
clearInterval(soundDp);
snD.stop();
soundSw = false;
sinMusic._alpha = 100;
snD.setVolume(100);
snD.start(pos);
}
};
}
};
function soundD() {
if (snD.getVolume()>0) {
pos = snD.position/1000;
snD.setVolume(snD.getVolume()-1);
} else {
snD.stop();
clearInterval(soundDp);
}
}

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