引用别人比喻:
SoundChannel 相当于录音机,Sound相当于磁带。
Sound包含的是音乐内容对象,play()方法包含在其中,但没有stop()方法,CS4手册里有说明属性
SoundChannel是个控制体,没有play()方法,但有stop()方法,同时还用来存储比如 声道 等信息
Sound包含在 import flash.media.Sound;
SoundChannel 包含在 import flash.media.SoundChannel;
同时给出相关配合的函数介绍:
URLRequest 可理解为:转换外部路径为程序路径 需导入 import flash.net.URLRequest;
常见的用法:
代码如下 |
复制代码 |
package
{
import flash.display.Sprite;//不用再介绍这个了吧
import flash.media.Sound;//声音内容对象必须的
import flash.media.SoundChannel;//声音控制体的
import flash.net.URLRequest; //转换路径的
import flash.text.TextField; //创建文本的
import flash.events.MouseEvent; //鼠标事件的
import flash.events.Event; //不再作解释
public class demo1 extends Sprite
{
var t:TextField = new TextField();//创建个空的动态文本,在这里创建才能被其他方法访问到
var playlen:SoundChannel = new SoundChannel();//创建个空的控制体对象,在这里创建才能被其他方法访问到
var sound1:Sound = new Sound();//创建个空的声音内容对象,在这里创建才能被其他方法访问到
public function demo1()
{
//以下这部分是设置一个动态文本到舞台
t.text = "播放"
t.x=100;
t.y=200;
t.selectable=false;
stage.addChild(t);
//这里是给动态文本添加侦听器,侦听单击事件,单击一下执行一次control()方法
t.addEventListener(MouseEvent.CLICK,control)
//转换外部音乐路径为src1程序用的音频源
var src1:URLRequest = new URLRequest("zzlg.mp3");
//将音频源载入sound1对象,这个时间sound1就是一个有内容的对象了
sound1.load(src1);
}
//单击动态文本执行的方法
function control(e:MouseEvent) {
//position是SoundChannel的属性,返回的是当前音乐播放的进度,以ms为单位。
// 第一次执行到这里playlen对象还是空的,因为还没有把音乐控制信息存入playlen, 获取到的播放进度为0
//如果是每二次执行到这里,将返回播放进度
var playlenint = playlen.position;
if(t.text == "播放"){
t.text = "暂停"
//第一次执行到这里由于上面播放进度为0,所以是是第一次播放音乐
//否则如果获取到进度不是0,就等于接着播放音乐
playlen=sound1.play(playlenint);
//这里开始播放音乐,并把同步信息存入playlen控制体, 这时playlen将拥用音乐的所有信息
}else {
playlen.stop();//停止播放音乐
t.text = "播放"
}
}
}
}
|