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

  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= Sound( URLRequest("http://58.56.37.223/download/D10Down/%CA%FD%D1%BC%D7%D3.mp3"));
//声音控制
var scz:SoundChannel= SoundChannel;
//时间点
var sjd:Array=[0,14200,41800,69920,85682];
//段落名称
var dlmc:Array=["第段","第 2段","第 3段","第 4段"];
//声音结束点
var sjsd:=0;
//进度显示
s.addEventListener(ProgressEvent.PROGRESS,jzjd);
var jdtxt:TextField= TextField;
function jzjd(event:ProgressEvent):void {
var bfb:Number=event.sLoaded/event.sTotal;
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:=0; k<dlmc.length; k) {
 //创建动态文本显示段落名称
 var txt:TextField= TextField;
 txt.autoSize=TextFieldAutoSize.CENTER;
 txt.text=dlmc[k];
 txt.x=50*k;
 txt.mouseEnabled=false;
 //创建精灵作按钮
 var b:Sprite= 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 {
 //如果播放头位置不小于声音结束点时声音就停止且移除侦听事件
  (scz.position>=sjsd) {
  scz.stop;
  stage.removeEventListener(Event.ENTER_FRAME,gx);
 }
}
}


Tags: 

延伸阅读

最新评论

发表评论