我在一个数组中有一组声音,当我单击“开始”按钮时,它将开始随机播放。现在我想知道如何在左右扬声器中交替播放声音。例如。如果第一个声音在我耳机的左扬声器中播放,则第二个声音应该在右扬声器中播放,依此类推。有可能吗?
1 回答
您可以使用 SoundTransform 类来完成此操作。查看此帮助文章以获取示例http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d1f.html
这是一个摘录,以防链接失效:
一个单独的 SoundChannel 对象控制声音的左右立体声通道。如果 mp3 声音是单声道声音,SoundChannel 对象的左右立体声通道将包含相同的波形。
您可以使用 SoundChannel 对象的 leftPeak 和 rightPeak 属性找出正在播放的声音的每个立体声通道的幅度。这些属性显示了声音波形本身的峰值幅度。它们不代表实际的播放音量。实际播放音量是声波幅度和 SoundChannel 对象和 SoundMixer 类中设置的音量值的函数。
SoundChannel 对象的 pan 属性可用于在播放期间为每个左右声道指定不同的音量级别。pan 属性的值范围为 -1 到 1,其中 -1 表示左声道以最高音量播放而右声道静音,1 表示右声道以最高音量播放而左声道静音。介于 -1 和 1 之间的数值设置左右声道值的比例值,值 0 表示两个声道都以平衡的中等音量播放。
下面的代码示例创建一个 SoundTransform 对象,其音量值为 0.6,平移值为 -1(左上声道音量且无右声道音量)。它将 SoundTransform 对象作为参数传递给 play() 方法,该方法将该 SoundTransform 对象应用于为控制播放而创建的新 SoundChannel 对象。
var snd:Sound = new Sound(new URLRequest("bigSound.mp3"));
var trans:SoundTransform = new SoundTransform(0.6, -1);
var channel:SoundChannel = snd.play(0, 1, trans);
通过设置 SoundTransform 对象的平移或音量属性,然后将该对象应用为 SoundChannel 对象的 soundTransform 属性,您可以在播放声音时更改音量和平移。
您需要添加的只是一个布尔标志,以指示哪一侧不应该有音量,然后适当地修改声音变换。