mp3播放器组件 |
| 作者:佚名 来源:闪吧 作者: ycsonglei 更新:2007-1-13 20:41:13 错误报告 我要投稿 |
利用Sound类制作的一个MP3播放器,可读取id3.2数据源,开放曲目列表接口. 相关函数: <1>addSongUrl(ssongUrl:String):Void,向列表中添加mp3文件地址. <2>deleteSongUrl(ndelPos:Number):Void,删除指定曲目序列位置的mp3文件 <3>loadSong(nsongPos:Number):Void,播放指定曲目序列位置的mp3文件 <4>listLen:Number,曲目序列长度 <5>songInfo:String,歌曲信息 <6>curTimeStr:String,歌曲当前时间信息
mxp组件
点击浏览该文件
测试的文件
点击浏览该文件
代码写在下面利用Sound类制作的一个MP3播放器,可读取id3.2数据源,开放曲目列表接口. 相关函数: <1>addSongUrl(ssongUrl:String):Void,向列表中添加mp3文件地址. <2>deleteSongUrl(ndelPos:Number):Void,删除指定曲目序列位置的mp3文件 <3>loadSong(nsongPos:Number):Void,播放指定曲目序列位置的mp3文件 <4>listLen:Number,曲目序列长度 <5>songInfo:String,歌曲信息 <6>curTimeStr:String,歌曲当前时间信息
mxp组件
点击浏览该文件
测试的文件
点击浏览该文件
代码写在下面
var checkPause,timeSum,curTime,listNo,listLen,stepCon:Number; var volNum,spanNum,volType,spanType:Number; var nSound:Sound=new Sound(); var listA:Array; var songUrl,songInfo,curTimeStr:String; function reSetDeal():Void { listA=new Array(); songUrl=""; songInfo=""; curTimeStr=""; stepCon=1; volNum=80; spanNum=50; checkPause=timeSum=listLen=listNo=curTime=0; spanType=volType=1; nSound.stop(); this.perBar.stock._x=0; this.perBar.stock._y=-5; spanGet(); volGet(); this.sbar.stock._y=this.vbar.stock._y=-4; } this.perBar.stock.onPress=function():Void { songPerDeal(); } this.perBar.stock.onRelease=function():Void { songPerDealOver(); } this.perBar.stock.onReleaseOutside=function():Void { songPerDealOver(); } /////////歌曲进度条调节函数///////////////// function songPerDeal():Void { delete this.onEnterFrame; if(timeSum>0) { this.perBar.stock.startDrag(true,0,-5,534,-5); this.perBar.stock.onEnterFrame=function():Void { songPerPosGet(); }; } } function songPerPosGet():Void { curTime=timeSum*this.perBar.stock._x/532; } function songPerDealOver():Void { this.perBar.stock.stopDrag(); delete this.perBar.stock.onEnterFrame; //调用歌曲播放函数 if(timeSum>0) { nSound.start(Math.round(curTime/1000-0.5)); this.onEnterFrame=function() { showProBar(); } } } //////////////声道音量调节按钮///////////// //减 this.sdelB.onPress=function():Void { dealSpan(-1); } this.sdelB.onRelease=function():Void { dealSpanOver(); } this.sdelB.onReleaseOutside=function():Void { dealSpanOver(); } //增 this.saddB.onPress=function ():Void { dealSpan(1); } this.saddB.onRelease=function():Void { dealSpanOver(); } this.saddB.onReleaseOutside=function():Void { dealSpanOver(); } function dealSpan(ntype:Number):Void { spanType=ntype; delete ntype; this.sbar.onEnterFrame=function():Void { spanGet(); } } function spanGet():Void { spanNum=spanNum+spanType*stepCon; if(spanNum<0) spanNum=0; if(spanNum>100) spanNum=100; setMpVolume(2*spanNum-100,1); this.sbar.stock._x=spanNum/100*146; } function dealSpanOver():Void { delete this.sbar.onEnterFrame; } //////声道 //增 this.vaddB.onPress=function():Void { dealVolum(1); } this.vaddB.onRelease=function():Void { dealVolumOver(); } this.vaddB.onReleaseOutside=function():Void { dealVolumOver(); } //减 this.vdelB.onPress=function():Void { dealVolum(-1); } this.vdelB.onRelease=function():Void { dealVolumOver(); } this.vdelB.onReleaseOutside=function():Void { dealVolumOver(); } function dealVolum(ntype:Number):Void { volType=ntype; delete ntype; this.vbar.onEnterFrame=function():Void { volGet(); } } function volGet():Void { volNum=volNum+volType*stepCon; if(volNum<0) volNum=0; if(volNum>100) volNum=100; setMpVolume(volNum,0); this.vbar.stock._x=volNum/100*146; } function dealVolumOver():Void { delete this.vbar.onEnterFrame; } ////////////////////////////////////////// //音量平衡度调整函数/////// function setMpVolume(nvtNum:Number,ntype:Number):Void { if(ntype==0) { nSound.setVolume(nvtNum); } else if(ntype==1) { nSound.setPan(nvtNum); } delete nvtNum; delete ntype; } ///////////////歌曲控制按钮动作/////////////////////// this.playB.onPress=function() { if(this._parent.songUrl!="") { songPlay(); } else { if(this._parent.listLen>0) loadSong(0); } }; this.pauseB.onPress=function() { songPause(); }; this.preB.onPress=function() { changeSongPos(-1); }; this.nextB.onPress=function() { changeSongPos(1); }; function changeSongPos(ntype:Number):Void { if(listLen>0) { delete this.onEnterFrame; nSound.stop(); if(ntype==1) { //下一首 listNo=listNo<listLen-1?listNo+1:0; } else { //上一首 listNo=listNo>0?listNo-1:listLen-1; } loadSong(listNo); } } function songPause():Void { if(songUrl!="") { if(checkPause==0) { delete this.onEnterFrame; checkPause=1; curTime=nSound.position; nSound.stop(); //trace("pause"+curTime); } else { //trace("play"+curTime) checkPause=0; nSound.start(Math.round(curTime/1000-0.5)); this.onEnterFrame=function() { showProBar(); } } } } //////读取歌曲信息///////////// function scanSong():Void { var infoStr,artStr,disStr,songStr:String; artStr=disStr=songStr=""; infoStr=" [总时间 "+timeToString(timeSum,1)+""; songStr=toUTF(nSound.id3.TIT2); artStr=toUTF(nSound.id3.TPE1); disStr=toUTF(nSound.id3.TALB); if(songStr=="") songStr=songUrl; if(artStr=="") artStr="佚名艺术家"; if(disStr=="") disStr="佚名唱片"; infoStr=infoStr+"--"+songStr+"--"+artStr+"--"+disStr+"]"; songInfo=infoStr; delete infoStr; delete artStr; delete disStr; delete songStr; this.onEnterFrame=function() { showProBar(); } } function showProBar():Void { var perNum:Number; curTime=nSound.position; curTimeStr=timeToString(curTime,0); //当前播放百分比 perNum=Math.round(curTime/timeSum*100-0.5); this.perBar.stock._x=534*perNum/100; delete perNum; } /////////计时函数/////////////////////// function timeToString(ntime:Number,ntype:Number):String { var m1,m2,m3,m4,m5,m6,m7,ntime1:Number; var returnStr:String; ntime1=Math.round(ntime/1000-0.5); m1=Math.round(ntime1/3600-0.5); m2=Math.round((ntime1-m1*60)/60-0.5); m3=ntime1-(m1*60+m2)*60; m4=m3-Math.round(m3/10-0.5)*10; m3=Math.round(m3/10-0.5); m5=ntime-ntime1*1000; m6=Math.round(m5/100-0.5); m7=Math.round((m5-m6*100)/10-0.5); m5=m5-m6*100-m7*10; if(ntype==0) { returnStr=new String(m1); returnStr=returnStr+m2+":"+m3+m4; returnStr=returnStr+m6+m7+m5; } else { if(m1==0) { returnStr=new String(m2); returnStr=returnStr+":"+m3+m4; } else { returnStr=new String(m1); returnStr=returnStr+m2+":"+m3+m4; } } //trace(m1+" "+m2); delete m1; delete m2; delete m3; delete m4; delete m5; delete m6; delete m7; delete ntype; delete ntime; delete ntime1; return returnStr; delete returnStr; } /////播放函数//////// function songPlay():Void { checkPause=0; this.onEnterFrame=function() { if(checkPause==1) { checkPause=0; timeSum=nSound.duration; if(timeSum>0) { nSound.start(); scanSong(); } else { errorShow(); delete this.onEnterFrame; } } checkPause=1; } } //////////歌曲播放完毕函数//////// nSound.onSoundComplete=function() { songOver(); } function songOver():Void { delete this.onEnterFrame; curTime=timeSum; this.perBar.stock._x=540; //判断歌曲是否到末尾 if(listNo<listLen-1) { loadSong(listNo+1); } else { loadSong(0); } } ///////歌曲播放出错函数////// function errorShow():Void { trace("error"); } /////////载入歌曲函数////////////// function loadSong(curSongPos:Number):Void { songUrl=listA[curSongPos]; listNo=curSongPos; nSound.loadSound(songUrl,true); songPlay(); delete curSongPos; } //添加歌曲地址到曲目列表函数/////// function addSongUrl(ssongUrl:String):Void { listA[listLen]=ssongUrl; listLen=listLen+1; delete ssongUrl; } //删除曲目列表中的歌曲地址函数////// function deleteSongUrl(ndelPos:Number):Void { var i:Number; if(ndelPos<listLen-1 && ndelPos>=0) { for(i=ndelPos;i<listLen-1;i++) { listA[i]=listA[i+1]; } listLen=listLen-1; //判断当前播放的歌曲位置变化 if(listNo>=ndelPos) listNo=listNo-1; } delete i; delete ndelPos; } reSetDeal(); stop();
源代码
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |