本实例需要使用到三个类,分别是Sound、SoundChannel和SoundTransform类,我们先来介绍一下这三个类。
Sound类--通过Sound 类您可以在应用程序中使用声音。使用 Sound 类可以创建 Sound 对象、将外部 MP3 文件加载到该对象,并实现播放、关闭功能,除此以外,你还可以以及访问有关声音的其他数据,如获取mp3文件的ID3 标签信息。
SoundChannel类--该类控制Flash项目中的声音。当声音在Flash中播放时,会自动分配一个声道。您也可以主动把一个声音赋值给一个声道,用来做精细的控制。可以播放、停止和平移声道,这需要SoundTransform类来配合。
SoundTransform类--该类包含音量和平移的属性。SoundTransform类的属性能够接受数值或表达式来描述声音的音量和声道的位置。音量的取值范围是0(静音)--1(声音的原始最大值)。超过1则表示把声音扩大相应的倍数,100就是把原始声音扩大100倍,这样的声音我们是无法接受的。
位置的取值范围是-1(左声道)到1(右声道),其中0表示立体声。
上述三个类的协调配合过程是这样的:首先将播放的Sound类赋值给SoundChannel类,然后更改SoundChannel类实例的SoundTransform属性来改变声音的大小和平移位置。
实例的制作过程如下:
一、准备一首MP3文件,与fla文件放在同一个文件夹中,命名为test.mp3
二、拖动两个Label组件,用来显示当前声音的音量和位置。分别命名为vol_info和pan_info
三、拖动两个Slider组件到舞台,用来调整声音的音量和位置。分别命名为vslider和pslider
四、设置vslider的组件参数;将最大值设置为1,最小值设置为0,步长设置为0.01.
五、设置pslider参数,将最大值设置为1,最小值设置为-1,步长设置为0.01
六、复制代码至动作面板测试就可。
code:
/*
作者:一叶秋风
网址:http://www.flashabc.net
*/
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import fl.events.SliderEvent;
var sndvol:Number = 0.2;
var sndpan:Number = 0;
var snd:Sound=new Sound();
var channel:SoundChannel=new SoundChannel();
var trans:SoundTransform = new SoundTransform(sndvol,sndpan);
//导入音乐
var songurl:URLRequest = new URLRequest("test.mp3");
snd.load(songurl);
//播放音乐
channel = snd.play();
//初始化各个组件;
vol_info.text = "当前音量:" + int(sndvol * 100);
pan_info.text = "当前位置:" + int(sndpan * 100);
vslider.value = sndvol;
pslider.value = sndpan;
trans.volume = sndvol;
channel.soundTransform = trans;
trans.pan = sndpan;
channel.soundTransform = trans;
//调动滑块
vslider.addEventListener(SliderEvent.CHANGE,vchange);
pslider.addEventListener(SliderEvent.CHANGE,pchange);
function vchange(event:SliderEvent):void
{
sndvol = event.target.value;
vol_info.text = "当前音量:" + int(sndvol * 100);
trans.volume = event.target.value;
channel.soundTransform = trans;
}
function pchange(event:SliderEvent):void
{
sndpan = event.target.value;
pan_info.text = "当前位置:" + int(sndpan * 100);
trans.pan = event.target.value;
channel.soundTransform = trans;
}