確かに可能ですし、先日似たようなことをやったことがあります。
音を包み込み、状態を維持できるようにパン、ボリュームなどのプロパティを追加したクラスを作成しました。
サウンドが再生されたら、新しいSoundTransform
を作成し、新しく作成したSoundChannel
に割り当てます。その後、包まサウンドクラスのパンの値に基づいてSoundTransform
にpanプロパティを設定します。それはおそらく大丈夫ですが、何回も繰り返さないサウンドに
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;
}
}
これは新しいSoundTransformオブジェクトごとに反復を作成して、気をつけてください。 –