Конечно, возможно, и на днях я просто делал нечто подобное.
Я создал класс, который обернул звук и добавил свойства панорамирования, громкости и т. Д., Чтобы можно было поддерживать состояние.
Когда воспроизводится звук, просто создайте новый SoundTransform
и назначьте его вновь созданному SoundChannel
. Затем установите свойство панорамирования на SoundTransform
на основе значения панорамирования в свернутом классе звука:
public class SoundWrapper
{
private var _pan:Number;
private var _sound:Sound;
private var _soundTransform:SoundTransform;
private var _soundChannel:SoundChannel;
public function SoundWrapper(sound:Sound):void
{
_sound = sound
}
public function playSound():void
{
_soundChannel= _sound.play();
_soundTransform = new SoundTransform();
_soundTransform.pan = pan;
_soundChannel.soundTransform = _soundTransform;
_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
}
public function onSoundComplete(e:Event):void
{
playSound();
}
public function stop():void
{
if(_soundChannel)
{
_soundChannel.stop();
_soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundComplete);
}
_soundTransform = null;
_soundChannel = null;
}
public function set pan(value:Number):void
{
_pan = value;
if(_soundTransform)
{
_soundTransform.pan = _pan;
}
}
public function get pan():Number
{
return _pan;
}
}