|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Почему во время касания двух объектов не всегда воспроизводится звук?
Здравствуйте.
Цель: Сделать так, чтобы при касание двух объектов (главного персонажа и лазера-копья) воспроизводился звук. Проблема: Звук воспроизводится, но не всегда или иногда воспроизводится, но с опаздыванием. Класс "касание": 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; } } } } } } 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); } } } |
|
|||||
Возможно потому что канал надо обнулять.
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
То есть, если у меня в этот момент (когда происходит касание) воспроизводится какой-либо посторонний\аналогичный звук, то я должен прекратить его воспроизведение?
|
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Я думаю, что в данном случае более критично то, что Вы его каждый раз грузите по новой.
|
|
|||||
Этот подход вообще не верный. Для звуков можно было бы создать класс со статическими методами, где сразу создать все необходимые звуки в одном экземпляре, а потом при вызове метода просто дергать soundChannel.play() вместо создания нового звука и канала
|
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Еще лучше использовать dispatchEvent в классе Collision, а в классе Sounds слушать это событие, а не жестко связывать с методами класса Sounds.
|
Часовой пояс GMT +4, время: 17:52. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|