大家看看這個圖片,作為MP3的背景圖,當然你有更漂亮或需要更多功能的也可以換進去.
我FLASH設(shè)置的大小為320*60,就比圖片稍大一點點,讓我們開始寫AS吧!
Frame 1:
第一步:
//定義XML和數(shù)組 var myXML = new XML(); var mp3total = new Array(); var mp3name = new Array(); var mp3 = new Array(); //定義s為聲音類 var s = new Sound(); //定義MP3和XML的路徑 var url = "music/"; //定義歌曲ID,也就是第幾第幾首 var id = 0; //定義已播放時間,在后面的播放/暫停按鈕里會用得著的 var played = 0; //定義停止按鈕參數(shù),判斷是否未停止播放,也就是說key==true時暫停按鈕可以按...(好像弄反了) var key = true; //定義暫停按鈕參數(shù),判斷是否已經(jīng)暫停播放 var paused = false;
定義完了上面的內(nèi)容后,讓我們進行下一步...
第二步:
//定義預讀函數(shù) function preloading() { //給preload賦予enterframe事件,preload就是進度條,后面會給大家解釋... preload.onEnterFrame = function() { //取得MP3的總字節(jié)數(shù)和已下載字節(jié)數(shù) var loaded = s.getBytesLoaded(); var total = s.getBytesTotal(); //進度條顯示的長度,取160的原因是因為最大長度有160...-___-b //----- qhwa 注:用_xscale可以更簡單、通用些 this._width = loaded / total * 160; if (loaded == total) { //下載完成后刪除enterframe事件 delete this.onEnterFrame; } }; }
這里相信用不著做多少解釋了...做過FLASH LOADING的朋友們應(yīng)該都用過,這里只不過是把影片的LOADING換成MP3的LOADING而已
現(xiàn)在開始第三步:
//播放聲音函數(shù) function loadsound(x) { //把已播放時間設(shè)置為0,用處上面說過了..-___-b played = 0; //為暫停和停止按鈕變量重新賦值 paused = false; key = true; //這里重復s = new Sound()是為了讓聲音已播放的毫秒數(shù)(position)重置為0,我找不到更好的解決辦法,還望大蝦們指教... s = new Sound(); //讀取MP3,url上面定義過了,是MP3的路徑,x是函數(shù)里的參數(shù),這里的x代表歌曲的MP3名,后面的true是讓聲音以數(shù)據(jù)流的格式播放 s.loadSound(url + x, true); //trackname是顯示歌曲名的文本框,id已經(jīng)被定義為歌曲的序列號,由于是從0開始的,所以在這里要+1,總不能讓第一首顯示為0吧...中間冒號里的內(nèi)容是隔開序列號與MP3的曲名,你可以換成自己喜歡的符號.后面的mp3name[id]就是加載進數(shù)組里的MP3歌名了,下面一個函數(shù)里會做解釋 trackname = (id + 1) + ". - " + mp3name[id]; //開始播放音樂... s.start(); //onSoundComplete的作用是聲音停止播放時調(diào)用后面的函數(shù) s.onSoundComplete = function() { //又是個條件表達式,解釋起來真煩...這東西一般是懶人才用的,比如說我...-___-b,寫成if大家會容易看明白些...這里是讓判斷問號(?)前面的(id == mp3total.length - 1)是否成立,成立的話id賦值為0,否則id賦值為id + 1 id = (id == mp3total.length - 1) ? 0 : (id + 1); //執(zhí)行l(wèi)oadsound函數(shù),也就是現(xiàn)在的函數(shù)再執(zhí)行一次,小括號里面參數(shù)是給函數(shù)里的x賦值為mp3[id],也就是歌曲名,mp3這個數(shù)組在下面解釋... loadsound(mp3[id]); //大括號就用不著解釋了吧? }; //mix就是在右邊亂蹦亂跳的東西,現(xiàn)在我沒辦法拿到MP3各個頻率的音高,只能用個假的來代替,呵呵 mix.gotoAndStop(1); //執(zhí)行preloading函數(shù) preloading(); }
打了好多字哦,有點累了,寫完下面的再休息 第四步:
//這個這個...大家還是翻翻以前的帖子或是看看幫助吧,反正在FLASH里用XML基本都會用到這兩個東西 myXML.ignoreWhite = true; System.useCodepage = true; //XML開始讀取的時候執(zhí)行下面的函數(shù) myXML.onLoad = function(success) { if (success) { //讀取成功就開始分析XML,parseXML函數(shù)在下面解釋... parseXML(); } else { //這個..我不說了好不好? trace("載入失敗"); } }; //分析XML function parseXML() { //取得MP3的總數(shù),關(guān)于這方面的資料大家翻翻以前的帖子或是到置頂帖里能找得到的,找不到你們問版主好了 mp3total = myXML.firstChild.childNodes; //建立for循環(huán) for (var i = 0; i < mp3total.length; i++) { //把MP3的歌曲名放到mp3name的數(shù)組里 mp3name[i] = mp3total[i].childNodes[0].firstChild.nodeValue; //和上面道理差不多,只不過這里是放mp3的文件名 mp3[i] = mp3total[i].childNodes[1].firstChild.nodeValue; } //.........(你就當我啞了) play(); } //讀取XML myXML.load(url + "list.xml"); stop();
出處:藍色理想
責任編輯:qhwa
上一頁 做個簡單的MP3播放器 [1] 下一頁 做個簡單的MP3播放器 [3]
◎進入論壇Flash專欄版塊參加討論
|