巧用Flash的Media組件實現多首mp3連播

來源:互聯網
上載者:User

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

  點擊這裡下載源檔案



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.