![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
Всем привет друзья.Во многих играх я видел в настройках громкость музыки настраевается отдельно а звуков отдельно.SoundTransform меняет звук глобально.
Вобщем собственно в заголовке и есть вопрос как можно менять громкость для звуков отдельно а для SoundChannel отдельно?Тут такой простенькой код для имзменения звуков,меняются конечно же громкость для всех звуков. var volumeControl:SoundTransform = new SoundTransform(1); var zvuktest:flash.media.SoundChannel; var testsound:Sound = new testzvuk(); zvuktest = (new testsound()).play(0, int.MAX_VALUE); function volplus(event:MouseEvent):void { volumeControl2.volume += 0.1; SoundMixer.soundTransform=volumeControl; testsound.play(); trace(volumeControl2.volume); } function volminus(event:MouseEvent):void { volumeControl2.volume -= 0.1; SoundMixer.soundTransform=volumeControl; testsound.play(); trace(volumeControl2.volume); } minusbtn.addEventListener(MouseEvent.CLICK,volminus); plusbtn.addEventListener(MouseEvent.CLICK,volplus); |
|
|||||
|
У метода play класса Sound есть третий параметр SoundTransform.
Создайте два экземпляра класса SoundTransform. Один для настройки громкости музыки, а другой для громкости звуков. Настраивайте их свойство volume. Когда воспроизводите звуки, то указывайте третим параметром один SoundTransform, а когда музыку, то другой SoundTransform. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
Спасибо буду пробовать.Единственное ,как я уже проэксперементил для каждого звука нажо свой chanel.Много мороки.
|
|
|||||
|
[+4 06.05.14]
|
Andrej - нет не нужно.
Вот костылидзе вам для затравки package com.in4core.utils { import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.utils.Dictionary; import flash.utils.setTimeout; /** * ... * @author in4core progression lab */ public final class FastSoundManager { private static const _hash:Dictionary = new Dictionary(true); private static const _playedHash:Dictionary = new Dictionary(true); private static var _locker:Boolean = false; public static function addSoundToLibrary(sound:Sound , soundName:String):void { _hash[soundName] = sound; } public static function addSounds(array:Array /* every element is array as [sound , soundName]*/):void { for (var i:int = 0; i < array.length; i++) { _hash[ array[i][1] ] = array[i][0]; } } public static function playSound(soundName:String , loop:Boolean = false , volume:Number = 1 , delayedCall:Number = 0):void { if (_locker) return; setTimeout(playSoundDelay, delayedCall , soundName , loop , volume); } private static function playSoundDelay(soundName:String , loop:Boolean = false , volume:Number = 1):void { if (volume === 0) return; var transform:SoundTransform = new SoundTransform(volume); var soundChannel:SoundChannel = new SoundChannel(); var sound:Sound = _hash[ soundName ]; if (!sound) return; soundChannel = sound.play(0, 0, transform); if (loop) soundChannel.addEventListener(Event.SOUND_COMPLETE , onSoundComplete); _playedHash[soundName] = [ sound , transform , soundChannel ]; } public static function stopSound(soundName:String):void { if (!_playedHash[soundName]) return; var soundChannel:SoundChannel = _playedHash[soundName][2]; soundChannel.removeEventListener(Event.SOUND_COMPLETE , onSoundComplete); soundChannel.stop(); } public static function stopAllSounds():void { for (var i:* in _playedHash) { stopSound(i); } } public static function stopAllSoundsInsteadOf(sounds:Array):void { for (var i:* in _playedHash) { if(sounds.indexOf(i) == -1) stopSound(i); } } public static function lockAllSounds():void { _locker = true; stopAllSounds(); } public static function unlockSounds():void { _locker = false; } private static function onSoundComplete(e:Event):void { var soundChannel:SoundChannel = e.currentTarget as SoundChannel; soundChannel.removeEventListener(Event.SOUND_COMPLETE , onSoundComplete); for (var i:* in _playedHash) { if ( _playedHash[i][2] == soundChannel) { playSound( i , true , soundChannel.soundTransform.volume); return; } } } public static function get isLocked():Boolean { return _locker; } } }
__________________
Марк Tween |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
in4core ага биг респект.Ща ток посмотрю,что к чему
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|