Flash MX 2004 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
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.