Просмотр полной версии : Срочно!!! Плавное затихание музыки при нажатии на кнопку
australian incognito
27.11.2005, 19:03
Ребята, срочно нужна ваша помощь! (1-1.5 часа).
Суть вопроса:
есть кнопка, при нажатии на которую музло плавно затихает до нуля и картина смещается на 336 кадр.
Почти получается, но при if (q = 0) почему-то не работает. Проверьте кодик, где ошибка...
on (release) {
gotoAndPlay(336);
my = new Sound();
var q = 100;
my.setVolume (q);
sec = function() {
q = q - 2.5;
trace (q);
my.setVolume (q);
}
setInterval (sec,120);
}
2 раза просмотрел, так и не увидел, где ж это "if (q = 0)" сидит???
Код вроде правильный, но почему ты объявляешь "my = new Sound();" в событии кнопки? Ведь, я так понял, музыка уже звучала ДО НАЖАТИЯ?
Чтобы помочь надобен либо полный код, либо, что предпочтительней, исходник.
Буньков Максим
27.11.2005, 19:22
я думаю что когда у тебя q<0 то это же не то setVolume таких значений не понимать вот и ставит как было 100... ты setInterval то убивай когда q<0.
function SoundVolume (UpDown:String) {
if (UpDown == "UP") {
BgSound.setVolume (setCont);
if (setCont >= bgSndMaxVolume) {
clearInterval (Volume);
} else {
setCont++;
}
} else if (UpDown == "DOWN" || UpDown == "OVER") {
BgSound.setVolume (setCont);
trace (BgSound.getVolume ());
if (setCont <= 0) {
if (UpDown == "OVER") {
BgSound.stop ();
}
clearInterval (Volume);
} else {
setCont--;
}
}
}
Volume = setInterval (SoundVolume, spdVolmChang, "UP");
вырезаю тебе мой код из проекта не давнешнего :) юзай на здоровье
тама правда еще перемнки глобальные нос суют сам разберешься.. :)
australian incognito
27.11.2005, 19:53
Суть вообщем в том, что действительно музыка уже играет до появления кнопки, а свой if (q = 0) я не предлагал, т. к. он все равно не работает...
Когда же setVolume < 0 , то на знаг "минус" вообще не реагирует, т.е. после нуля звук опять нарастает.
Буньков Максим
27.11.2005, 20:01
Нет ну а Вы что хотели?
australian incognito
28.11.2005, 04:38
Нет ну а Вы что хотели?
Я достаточно новый человек во флеше, а в AS (как и в любом программировании) тем более... Ваши комментарии полезны уже солидным программерам, а мне уже не к спеху, а так ради интереса...
Может ещё кто отзовется!!!
Вообщем-то, у меня другой немного теперь вопрос: как нейтрализовать (остановить) действие setInterval в моем цикле?
on (release) {
gotoAndPlay(336);
var q = 100;
my = new Sound();
my.setVolume(q);
soundvol = function () {
q = q - 2.5;
my.setVolume(q);
trace(q);
if (q == 0) {
???
}
};
setInterval(soundvol, 80);
}
для начала нужно запомнить уникальный номер таймера, который возвращается функцией setInterval:
_global.timerID = setInterval(soundvol, 80);
а далее, инретвал можно "убить" вот так:
clearInterval(_global.timerID)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.