Показать сообщение отдельно
Старый 11.04.2009, 22:11
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
По умолчанию Метод Sound.setVolume - убрать глобальное действие на все звуки

Собственно, есть в игре музыка, есть в игре звуки.
Надо разделить их громкость.
Код AS1/AS2:
/**
* ...
* @author FluFme
	http://www.flufme.ru
*/
 
class SoundMaster extends Sound 
{
	private static var music:Sound;
	public static function addSound(id:String):Void {
		var snd:Sound = new Sound();
		snd.attachSound(id)
		snd.setVolume(Main.soundVolume);
		snd.start();
	}
 
	public static function musicOn():Void {
		if (music) {
			music.stop();
			delete music;
		}
		music = new Sound();
		music.attachSound("bgm");
		updateVolume();
		music.start();
	}
 
	public static function musicOff():Void {
		music.stop();
		delete music;
	}
 
	public static function updateVolume():Void {
		music.setVolume(Main.musicVolume);
	}
 
}
Делаю SoundMaster.musicOn(), работает отлично, но при SoundMaster.addSound(...) - громкость музыки (храниться в переменной music) вдруг становиться громкостью последнего созданого Sound`а, то есть звуки как будто проходят через аналог SoundBuffer`а из AS3.
Как сделать так, чтобы звуки были не зависимы друг от друга? (или хотя бы 2 потока звуков - для музыки и для звуков)