初识AS3:任意播放整首音乐中的某一段

来源:岁月联盟 编辑:zhu 时间:2009-01-04
初识AS3:任意播放整首音乐中的某一段内容简介:[知识点] 1、声音播放起始点由s.play(参数)中参数决定 2、利用数组获取多个起始点var sjd:Array=[0,14200,41800,69920,85682]; 3、点击相应按钮获取数组中的某元素var zjl:Sprite=event.target as Sprite; scz=

[知识点]
1、声音播放起始点由s.play(参数)中参数决定
2、利用数组获取多个起始点var sjd:Array=[0,14200,41800,69920,85682];
3、点击相应按钮获取数组中的某元素var zjl:Sprite=event.target as Sprite;
scz=s.play(sjd[getChildIndex(zjl)-1]);

[代码]
///////////////////直接将下面的代码复制到第一帧上即可////////////////////
//载入外部音乐
var s:Sound=new Sound(new URLRequest("http://58.56.37.223/download/D10Down/%CA%FD%D1%BC%D7%D3.mp3"));
//声音控制
var scz:SoundChannel=new SoundChannel();
//时间点
var sjd:Array=[0,14200,41800,69920,85682];
//段落名称
var dlmc:Array=["第一段","第二段","第三段","第四段"];
//声音结束点
var sjsd:int=0;
//进度显示
s.addEventListener(ProgressEvent.PROGRESS,jzjd);
var jdtxt:TextField=new TextField();
function jzjd(event:ProgressEvent):void {
var bfb:Number=event.bytesLoaded/event.bytesTotal;
jdtxt.autoSize=TextFieldAutoSize.CENTER;
jdtxt.text="声音正在加载——已经加载 :"+Math.round(bfb*100)+"%";
addChild(jdtxt);
jdtxt.y=100;
jdtxt.x=100;
}
//加载完成才能控制
s.addEventListener(Event.COMPLETE,jzwc);
function jzwc(event:Event):void {
//移除进度文本和加载侦听器
removeChild(jdtxt);
s.removeEventListener(ProgressEvent.PROGRESS,jzjd);
for (var k:int=0; k<dlmc.length; k++) {
//创建动态文本显示段落名称
var txt:TextField=new TextField();
txt.autoSize=TextFieldAutoSize.CENTER;
txt.text=dlmc[k];
txt.x=50*k;
txt.mouseEnabled=false;
//创建精灵作按钮
var b:Sprite=new Sprite();
addChild(b);
b.buttonMode=true;
b.addChild(txt);
b.x=b.y=100;
b.addEventListener(MouseEvent.CLICK,dj);
}
}
//鼠标点击按钮时执行
function dj(event:MouseEvent):void {
//声音停止
scz.stop();
//精灵中的子精灵
var zjl:Sprite=event.target as Sprite;
//声音播放(从子精灵所在的位置得到对应时间点)
scz=s.play(sjd[getChildIndex(zjl)-1]);
//得到声音结束点
sjsd=sjd[getChildIndex(zjl)];
//当然要不断更新才知道声音播放头的位置
stage.addEventListener(Event.ENTER_FRAME,gx);
function gx(e:Event):void {
//如果播放头的位置不小于声音结束点时声音就停止且移除侦听事件
if (scz.position>=sjsd) {
scz.stop();
stage.removeEventListener(Event.ENTER_FRAME,gx);
}
}
}