巧用Flash的Media組件實現多首mp3連播_Flash教程
推薦:Flash動態色彩偏轉控制技巧請先看一個flash的色彩動態調整演示:我們在Flash的制作中,往往需要對色彩進行控制,以使我們的動畫影片更多彩多姿。那么,在Flash中到底有多少方法可以來控
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文件上傳到你的網站的同一個文件夾中。
分享:Flash外部導入圖片的長寬限制在flash用LoadMovie導入外部圖片居然有最大寬度和最大高度限制,在官方文檔里居然沒有寫明,今天被我碰到了...紀錄一下吧,用LoadMovie導入外部圖片,所支持
- 相關鏈接:
- 教程說明:
Flash教程-巧用Flash的Media組件實現多首mp3連播。