Flash MX 2004 的Media組件確實不錯,大家在使用的時候可能發(fā)現(xiàn)MediaDisplay組件只能播放一首mp3,如果要讓他播放完一首歌曲后再接著播放另一首歌曲就不行了。今天就來給大家介紹一下怎樣用MediaController和MediaDisplay組件實現(xiàn)多首mp3的聯(lián)播。
播放器界面如圖:
思路如下:
歌曲列表用一外部XML文件來記錄,便于修改。開始的時候定義一XML對象,并載入外部XML文件,載入后再將歌曲列表提取出來放入一數(shù)組中。接著用attachMovie()方法將MediaController和MediaDisplay組件載入舞臺,然后設(shè)置各自的參數(shù),并將二者相關(guān)聯(lián)(Media.associateController()或者Media.associateDisplay()方法都行)當(dāng)一首歌曲播放完后,觸發(fā)MediaDisplay的complete事件,在此事件中我將MediaController和MediaDisplay組件卸載并重新載入MediaController和MediaDisplay組件(使用attachMovie()方法)并給一新的實例名,并設(shè)置MediaDisplay組件的播放內(nèi)容為下一首歌曲,如此往復(fù)來播放所有的歌曲。
制作步驟:
1.新建一個FLASH文檔,設(shè)置舞臺大小:220*70。
2.將組件MediaController和MediaDisplay拖入舞臺,然后從舞臺上刪除。這樣做的目的是將這兩個組件載入庫中,為接下來用attachMovie()方法將MediaController和MediaDisplay組件載入舞臺做好準(zhǔn)備。
3.新建一層,命名為function。在該層的第一幀上輸入如下AS代碼:
function init(){ flagNum = 1; //播放歌曲的標(biāo)示 mp3Num = 0; attachController(); }; //將MediaController和MediaDisplay組件載入舞臺并初始化 function attachController(){ //將MediaDisplay組件載入舞臺并給定義實例名 "mp3Container" + flagNum _root.attachMovie("MediaDisplay","mp3Container" + flagNum,2); //設(shè)置組件初始參數(shù) with(_root["mp3Container" + flagNum]){ _x = 250; _y = 0; setMedia(myArray[mp3Num],"MP3"); } //將MediaController組件載入舞臺并給定義實例名 "mp3Controller" + flagNum _root.attachMovie("MediaController","mp3Controller" + flagNum,1); //設(shè)置組件初始參數(shù) with(_root["mp3Controller" + flagNum]){ _x = 0; _y = 0; activePlayControl = false; controllerPolicy = "on"; //將MediaController和MediaDisplay組件相關(guān)聯(lián) associateDisplay(_root["mp3Container" + flagNum]); }; }; function playNext(){ //將MediaController和MediaDisplay組件從舞臺上刪除 _root["mp3Controller" + flagNum].removeMovieClip(); _root["mp3Container" + flagNum].removeMovieClip(); flagNum += 1; mp3Num += 1; //如果播放到歌曲的最后一首,將mp3Num = 0,意為將從頭開始播放 if(mp3Num == mp3Total) mp3Num = 0; //重新載入MediaController和MediaDisplay組件,并給一新的實例名 attachController(); //因為每播放完一首歌曲后MediaController和MediaDisplay組件從舞臺上被卸載 //然后又重新載入MediaController和MediaDisplay組件并給了另外一個實例名 //所以要重新向注冊的監(jiān)聽器廣播事情 _root["mp3Container" + flagNum].addEventListener("complete", myListener); };
4.新建一層,命名為action,在該層第一幀輸入一下AS代碼:
stop(); //數(shù)組myArray用來存儲 載入的XML文檔中的歌曲名稱 var myArray = new Array(); //歌曲的總數(shù) var mp3Total:Number; var myXml = new XML(); myXml.ignoreWhite = true; myXml.load("mp3list.xml"); myXml.onLoad = function() { var e = myXml.firstChild.childNodes; mp3Total = e.length; for (var i = 0; i<mp3Total; i++) { myArray.push(e[i].attributes["title"]); } init(); _root["mp3Container"+flagNum].addEventListener("complete", myListener); }; var myListener = new Object(); myListener.complete = function(eventObject) { playNext(); };
5.保存文件,Ctrl+Enter測試影片并輸出SWF文件。測試影片時會有錯誤提示,不用擔(dān)心,這是由于沒有生成XML文檔的緣故。
6.創(chuàng)建XML文檔:
<?xml version="1.0" encoding="utf-8"?> <mp3Lists> <item title="1.mp3" /> <item title="2.mp3" /> </mp3Lists>
將該文件保存在與原SWF文件相同的文件夾中,命名為mp3list.xml。
7.在原文件目錄下放入兩首mp3,默認(rèn)名稱為1.mp3,2.mp3,這里的名稱和歌曲數(shù)目大家可以自己修改XML文件。
到此為止,一個連放兩首MP3的播放器就可以使用了,打開SWF文件,你將會聽到優(yōu)美動聽的音樂,同時看到播放進度顯示等MP3播放器常有的功能。注意:要想讓這個播放器用于你的網(wǎng)站上,必須把SWF文件和XML以及兩首MP3文件上傳到你的網(wǎng)站的同一個文件夾中。
[·源文件下載·]
出處:閃客帝國
責(zé)任編輯:一個好孩子
◎進入論壇Flash專欄版塊參加討論
|