Flash MX 2004 的Media組件確實不錯,大家在使用的時候可能發現MediaDisplay組件只能播放一首mp3,如果要讓他播放完一首歌曲後再接著播放另一首歌曲就不行了。今天就來給大家介紹一下怎樣用MediaController和MediaDisplay組件實現多首mp3的聯播。
播放器介面如圖:
思路如下:
歌曲列表用一外部XML檔案來記錄,便於修改。開始的時候定義一XML對象,並載入外部XML檔案,載入後再將歌曲列表提取出來放入一數組中。接著用attachMovie()方法將MediaController和MediaDisplay組件載入舞台,然後設定各自的參數,並將二者相關聯(Media.associateController()或者Media.associateDisplay()方法都行)當一首歌曲播放完後,觸發MediaDisplay的complete事件,在此事件中我將MediaController和MediaDisplay組件卸載並重新載入MediaController和MediaDisplay組件(使用attachMovie()方法)並給一新的執行個體名,並設定MediaDisplay組件的播放內容為下一首歌曲,如此往複來播放所有的歌曲。
製作步驟:
1.建立一個FLASH文檔,設定舞台大小:220*70。
2.將組件MediaController和MediaDisplay拖入舞台,然後從舞台上刪除。這樣做的目的是將這兩個組件載入庫中,為接下來用attachMovie()方法將MediaController和MediaDisplay組件載入舞台做好準備。
3.建立一層,命名為function。在該層的第一幀上輸入如下AS代碼:
function init(){flagNum = 1;//播放歌曲的標示mp3Num = 0;attachController();};//將MediaController和MediaDisplay組件載入舞台並初始化function attachController(){//將MediaDisplay組件載入舞台並給定義執行個體名 "mp3Container" + flagNum _root.attachMovie("MediaDisplay","mp3Container" + flagNum,2); //設定組件初始參數 with(_root["mp3Container" + flagNum]){ _x = 250; _y = 0; setMedia(myArray[mp3Num],"MP3");}//將MediaController組件載入舞台並給定義執行個體名 "mp3Controller" + flagNum_root.attachMovie("MediaController","mp3Controller" + flagNum,1);//設定組件初始參數with(_root["mp3Controller" + flagNum]){ _x = 0; _y = 0; activePlayControl = false; controllerPolicy = "on"; //將MediaController和MediaDisplay組件相關聯 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組件並給了另外一個執行個體名 //所以要重新向註冊的監聽器廣播事情 _root["mp3Container" + flagNum].addEventListener("complete", myListener);}; |
|
4.建立一層,命名為action,在該層第一幀輸入一下AS代碼:
stop();//數組myArray用來儲存 載入的XML文檔中的歌曲名稱var myArray = new Array();//歌曲的總數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檔案。測試影片時會有錯誤提示,不用擔心,這是由於沒有產生XML文檔的緣故。
6.建立XML文檔:
<?xml version="1.0" encoding="utf-8"?><mp3Lists> <item title="1.mp3" /> <item title="2.mp3" /></mp3Lists> |
|
將該檔案儲存在與原SWF檔案相同的檔案夾中,命名為mp3list.xml。
7.在原檔案目錄下放入兩首mp3,預設名稱為1.mp3,2.mp3,這裡的名稱和歌曲數目大家可以自己修改XML檔案。
到此為止,一個連放兩首MP3的播放器就可以使用了,開啟SWF檔案,你將會聽到優美動聽的音樂,同時看到播放進度顯示等MP3播放器常有的功能。注意:要想讓這個播放器用於你的網站上,必須把SWF檔案和XML以及兩首MP3檔案上傳到你的網站的同一個檔案夾中。
點擊這裡下載源檔案