PDA

Просмотр полной версии : Звук из функции - управление


lakehouse
27.02.2007, 20:46
Есть такой код, который совершенно корректно запускает звук с эффектом возрастания (Fade OUT). После этого необходимо дальше управлять этим звуком, что и не получается. То есть trace(lp_sound); выводит undefined. Как так может быть?

function loopStart(loop:String, rate:Number) {
var lp_sound:Sound = new Sound();
lp_sound.attachSound(loop);
lp_sound.start(0, 99);
lp_sound.setVolume(0);
this.onEnterFrame = function() {
so = lp_sound;
newVolume = so.getVolume()+rate;
if (newVolume<100) {
so.setVolume(newVolume);
} else {
so.setVolume(100);
delete this.onEnterFrame;
}
}
}

loopStart("loop",15);
trace(lp_sound); // Выводит Undefined!!!!

this.create
27.02.2007, 21:15
Ссылка на объект класса Sound уничтожается после выполнения функции (особенность области видимости переменных). Создайте внешнюю перемнную и присвойте ей ссылку на объект класса Sound.

function loopStart(loop:String, rate:Number) {
lp_sound = new Sound();
lp_sound.attachSound(loop);
lp_sound.start(0, 99);
lp_sound.setVolume(0);
this.onEnterFrame = function() {
so = lp_sound;
newVolume = so.getVolume()+rate;
if (newVolume<100) {
so.setVolume(newVolume);
} else {
so.setVolume(100);
delete this.onEnterFrame;
}
}
}
var lp_sound:Sound;
loopStart("loop",15);
trace(lp_sound);
Примерно так.