我正尝试在Flash中制作一个迷你游戏,说明蚊子被打碎了,我希望蚊子声像在玩家面前一样摇动(因此,如果蚊子在屏幕右侧,则摇动声波为1,并且-1)。
问题是,我只能在播放方法中使用声音变换,如果我想更新蚊子的位置(在Enterframe上以24fps的速度进行播放),则会留下很多声音在播放。
tl; dr,是否可以在闪光灯中动态平移声音?
最佳答案
当然有可能,而前几天我刚好在做类似的事情。
我创建了一个包装声音的类,并添加了声像,音量等属性,以便可以保持状态。
播放声音时,只需创建一个新的SoundTransform
并将其分配给新创建的SoundChannel
即可。然后,根据包裹的声音类中的pan值在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;
}
}
关于flash - 在AS3中通过声像动态定位声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408784/