Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Срочно!!! Плавное затихание музыки при нажатии на кнопку (http://www.flasher.ru/forum/showthread.php?t=72468)

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);
}

MOHCTEP 27.11.2005 19:18

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);
}

breez38 28.11.2005 05:45

для начала нужно запомнить уникальный номер таймера, который возвращается функцией setInterval:
Код:

_global.timerID = setInterval(soundvol, 80);
а далее, инретвал можно "убить" вот так:
Код:

clearInterval(_global.timerID)


Часовой пояс GMT +4, время: 21:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.