|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2010
Сообщений: 30
|
проблема: музыка начинает играть в каждом кадре
привет!
Столкнулся с проблемой, к анимации добавил кнопку, и в при нажатии на кнопку сделал, так что бы через onEnterFrame и if у меня отслеживалось, что сначала, прозрачность кнопки и фона падает до нуля, а потом начинает проигрываться анимация. и когда потребовалось туда вставить звук, то вышло что функция, которая через Sound берет из библиотеки музыкальный трек и воспроизводит, вызывается в каждом кадре, и выходит такая какофония. я подозреваю, что надо бы сделать как то через переменную, которая бы была меткой "что пора врубить музыку", и отслеживать эту переменную чем то(слушателем?), и в случае чего, вызывало бы мою музыкальную функцию. подскажите пожалуйста как грамотно это сделать? или скажите, возможно ли управлять звуком брошенным на таймлайн? ведь когда в опциях того слоя(или кадров), я ставлю начальное положение stop, то все молчит, а как запустить через код, я не знаю. Добавлено через 58 минут я только что, придумал хитрость, к анимации добавил слой, где первый кадр - пустой, и звук не воспроизводиться сразу(мувик на сцене, с _visible = 0 и .stop()), и теперь нажав на кнопку все вроде бы хорошо(убрал функцию воспроизводящий и импортирующий звук, и музыка не множиться). но интересно на будущие узнать как более правильно решать такие задачи, кодом? как? |
|
|||||
Кодом - да. Читайте класс Sound. - attachSound()< Start и Stop.
Дождаться пока звук доиграет и не запускать в это время новый - onSoundComplete Класс простенький. Только имейте ввиду что громкость всех звуков, лежащих в ОДНОМ клипе, к примеру на _root - будет одинаковая. |
|
|||||
Регистрация: Mar 2010
Сообщений: 30
|
тоесть если в энтерфрейме я вызову что то подобное, звук не будет множиться?
mySound.onSoundComplete = function() { this.start(); }; |
|
|||||
нет. это СОБЫТИЕ. Оно НАСТУПАЕТ само по себе, когда музыка проигралась.
Соотв. функцию переключения или запуска не надо запускать самому. Никаких доп. телодвижений делать не надо. |
|
|||||
Регистрация: Mar 2010
Сообщений: 30
|
ээ... мне в моем случае - зацикливать ее не надо. мне ее надо спустя какие то эффекты, запустить анимацию, и музыку(а это файл, с нарезкой треков, которые подобранны под анимацию и синхронизированны с ней).
с классом sound - проблемм не возникает, управление им хорошо гуглица и находиться многое на этом форуме. button.onPress = function(){ button.gotoAndStop(3); this.onEnterFrame = function(){ bgbg._alpha -= 3; if(bgbg._alpha<=0){ bgbg._alpha=0; removeMovieClip(bgbg); } button._alpha-=3; if(button._alpha<=0){ bgbg._alpha=0; //removeMovieClip(bgbg); button._x=-100; } if(button._alpha<=30){ movie._visible = true; movie.play(); myMus.start(0,0);\\и вот тут вот чудеса происходить начинают } if(movie._currentframe >= 722){ movie.gotoAndStop(722); } } } может быть вы знаете и мне подскажите, а то я бывает сталкиваюсь с таким, и придумываю что то велосипедное, а может люди по другому и проще выходят из этой ситуации? |
|
|||||
Вам надо определить - проигрывается ли в наастоящий момент данный звук.
1. Заведите переменную, которая выставляется в TRUE при первом запуске звука и в FALSE по onSoundComplete и при инициализации. Соотв 2. Почитайет про .position НИкаких велосипедов и хитростей. Просто методжы класа и здравый смысл. А так, пока альфа у вас менье 30, а она меньше, звук у ас запускается каждый раз. |
|
|||||
Регистрация: Mar 2010
Сообщений: 30
|
ухты! спасибо, большое, буду разбираться.
|
Часовой пояс GMT +4, время: 20:44. |
|
« Предыдущая тема | Следующая тема » |
Теги |
sound , музыка |
|
|