Показать сообщение отдельно
Старый 12.07.2010, 12:37
filepark вне форума Посмотреть профиль Отправить личное сообщение для filepark Найти все сообщения от filepark
  № 1  
Ответить с цитированием
filepark

Регистрация: Jul 2009
Сообщений: 77
По умолчанию Запаздывание звука

В моём проекте есть звуковое сопровождение: клики по кнопкам, музыка и голосовое сопровождение. Клики включены в swf, музыка и голос загружаются. Упростив программу до минимума, мы получим:

Основная прога на таймлайне:
Код AS3:
var clickMenuButt:ClickMenuButt = new ClickMenuButt();
var musicBack:MusicBack = new MusicBack();
var musicOn:Boolean = false;
var voiceBack:VoiceBack = new VoiceBack();
var voiceOn:Boolean = false;
 
clickButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerClickButt);
function downHandlerClickButt(evt:MouseEvent):void {
	clickMenuButt.clickButt();
}
 
musicButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerMusicButt);
function downHandlerMusicButt(evt:MouseEvent):void {
	musicOn = !musicOn;
	if (musicOn) {
		musicBack.playMusic();
	} else {
		musicBack.stopMusic();
	}
}
 
voiceButt.addEventListener(MouseEvent.MOUSE_DOWN, downHandlerVoiceButt);
function downHandlerVoiceButt(evt:MouseEvent):void {
	voiceOn = !voiceOn;
	if (voiceOn) {
		voiceBack.playVoice();
	} else {
		voiceBack.stopVoice();
	}
}
Класс ClickMenuButt:
Код AS3:
package {
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundTransform; 
 
	public class ClickMenuButt {
		static public var CLICK_VOLUME:Number = 1;
		private var clickSound:Sound;
		private var clickChannel:SoundChannel;
		private var clickTransform:SoundTransform;
 
		public function ClickMenuButt() {
			clickSound = new ClickSound();
			clickTransform = new SoundTransform();
			clickTransform.volume = CLICK_VOLUME;
		}
 
		public function clickButt():void {
			clickChannel = clickSound.play();
			clickChannel.soundTransform = clickTransform;
		}
	}
}
Класс MusicBack (класс VoiceBack пока аналогичен):
Код AS3:
package {
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.media.SoundTransform; 
	import flash.net.URLRequest;
 
	public class MusicBack {
		static public var MUSIC_VOLUME:Number = 0.05;
		private var musicSound:Sound;
		private var musicChannel:SoundChannel;
		private var musicTransform:SoundTransform;
 
		public function MusicBack() {
			musicSound = new Sound(new URLRequest("Music01.mp3"));
			musicTransform = new SoundTransform();
			musicTransform.volume = MUSIC_VOLUME;
		}
 
		public function playMusic():void {
			musicChannel = musicSound.play();
			musicChannel.soundTransform = musicTransform;
		}
 
		public function stopMusic():void {
			musicChannel.stop();
		}
	}
}
Если щёлкать по кнопкам без музыки и голоса всё ок, но включив музыку, тем более вместе с голосом, все звуки начинают тормозить в т.ч. и клики, для меня это неприемлемо. Почему и что делать?
Задержка звука может показаться незначительной, но это же без основной программы, потом задержка может значительно вырасти. Ссылка архив со всеми файлами http://filepark.narod.ru/sound_question.rar

Добавлено через 21 час 56 минут
Может быть есть возможность повысить приоритет кликов, чтобы хотя бы они срабатывали вовремя?