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
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檔案上傳到你的網站的同一個檔案夾中。