Пока остановился на таком варианте:

Код:
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);
}
}
Звук выключается с плавным уменьшением громкости. Но тоже, при малых уровнях громкости, иногда слышны щелчки-переходы на меньшую громкость.
Если есть какие-то соображения по этому поводу, прошу высказываться.

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