|
|
|||||
Регистрация: Feb 2008
Сообщений: 21
|
Шорох при уменьшении громкости.
При нажатии на клавишу начинается проигрывание звука:
При отпускании клавиши в цикле запускается уменьшение громкости на 0.1 за шаг: for(var cnt1:int = 10;cnt1 < 0;cnt1++) { soundChannel.soundTransform = new SoundTransform(cnt1/10); } И вторая беда. При повторном нажатии на одну и ту же клавишу, старый звук останавливаю, новый проигрываю: В результате если быстро нажимать на одну и ту же клавишу (т.е. быстро создавать/останавливать звук) появляются щелчки. Что тоже непонятно. В живую попробовать проблему можно здесь http://www.pixorama.ru/demo/piano |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Приведенный код ни разу не выполнится, так что непонятно что здесь обсуждать.
Не говоря уже о том, что совершенно непонятно, зачем тут вообще нужен цикл.
__________________
Reality.getBounds(this); |
|
|||||
Звук в цикле уменьшать без толку... Цикл мгновенно отработает. Что-бы сделать затухание нужно учесть время между шагами. Возможно из-за этого и щелчок.
Еще щелчок возможен из-за того, что вы в каждой итерации назначаете новый класс SoundTransform, хоть это и маловероятно но все же... Добавлено через 2 минуты У, шайтан... Я даже не обратил внимания на условия цикла... |
|
|||||
Регистрация: Feb 2008
Сообщений: 21
|
Цитата:
Добавлено через 2 минуты Цитата:
Добавлено через 55 минут Нагуглил кучу топиков с описанием подобной проблемы, и все без решения. Вот тут та же самая проблема, только звук уменьшается твинером http://stackoverflow.com/questions/1...ding-sound-as3 |
|
|||||
Ну может вам это поможет. У меня прекрасно работает, без щелчков.
package { import com.greensock.TweenMax; import flash.events.Event; import flash.events.IOErrorEvent; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; /** * ... * @author Mikhail Klabukov */ public class BackgroundSound { static public const SOUND_OFF:String = "soundOff"; static public const SOUND_ON:String = "soundOn"; private var sound:Sound; private var channel:SoundChannel private var played:Boolean = false; private var _pos:Number; private var st:SoundTransform; public function BackgroundSound() { sound = new Sound(new URLRequest('**********soundUrl**********')); sound.addEventListener(IOErrorEvent.IO_ERROR, errorSoundLoad) channel = sound.play(0, 10000); played = true; MainControls.self.addEventListener(MainControls.SOUND_SWITCH, switchSound); } private function errorSoundLoad(e:IOErrorEvent):void { trace(e) } private function switchSound(e:Event):void { if (TweenMax.isTweening(st)) return; st = channel.soundTransform; if (played) { _pos = channel.position; TweenMax.to(st, 2, {volume: 0, onUpdate: function():void { channel.soundTransform = st; }, onComplete: function():void { channel.stop(); }}); played = false MainControls.self.dispatchEvent(new Event(SOUND_OFF)); } else { channel = sound.play(_pos, 10000); TweenMax.to(st, 3, {volume: 1, onUpdate: function():void { channel.soundTransform = st; }}); played = true; MainControls.self.dispatchEvent(new Event(SOUND_ON)); } } } } |
|
|||||
Регистрация: Feb 2008
Сообщений: 21
|
В том то и дело, что щелчки так же есть. Методом научного тыка удалось установить, что щелчки при быстром изменении громкости есть всегда во флеше. Просто на некоторых звуках это заметнее. Пример, берем тот же ютуб, ищем видео где играют на пианино. http://www.youtube.com/watch?v=x9a5u4JzkLg и ползунок громкости резко двигаем вверх-вниз. И получаем тоже самое шуршание что и в моем коде.
|
|
|||||
Регистрация: Feb 2008
Сообщений: 21
|
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 02:27. |
|
« Предыдущая тема | Следующая тема » |
|
|