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

Регистрация: Aug 2012
Сообщений: 297
По умолчанию Почему во время касания двух объектов не всегда воспроизводится звук?

Здравствуйте.

Цель: Сделать так, чтобы при касание двух объектов (главного персонажа и лазера-копья) воспроизводился звук.

Проблема: Звук воспроизводится, но не всегда или иногда воспроизводится, но с опаздыванием.

Класс "касание":
Код AS3:
package madness
{
	import flash.events.Event;
	import flash.display.MovieClip;
	import madness.effects.Sounds;
 
	public class Collision
	{
		public function Collision()
		{
			Settings.stage.addEventListener(Event.ENTER_FRAME,collision);
		}
		private function collision(event:Event):void
		{
			var laserlance:Array = Settings.laserlance;
			const laserlanceLength:int = laserlance.length;
			var mainPersona:MovieClip = Settings.mainPersona;
			for(var e:int = 0; e < laserlanceLength; e++)
			{
				var ll:MovieClip = laserlance[e];
				if(ll.hitTestObject(mainPersona))
				{
					var alive:Boolean = laserlance[e].alive;
					if(alive)
					{
						Sounds.playCollisionLaserLanceAndMainPersona();
						laserlance[e].alive = false;
					}
				}
			}
		}
	}
}
Класс "звуки":
Код AS3:
package madness.effects
{
	import flash.media.Sound;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.media.SoundTransform;
	import flash.media.SoundChannel;
	import madness.Settings;
 
	public class Sounds
	{
		public static function playCollisionLaserLanceAndMainPersona():void
		{
			var ur:URLRequest = new URLRequest('files/Laser-lance collision main persona.mp3');
			var smp:Sound = new Sound(ur);
			var sc:SoundChannel = new SoundChannel();
			sc = smp.play();
			sc.soundTransform = new SoundTransform(Settings.volumeCollisionLaserLanceAndMainPersona);
		}
	}
}