方法一
製作步驟:
1.建立一個FLASH文檔,設定舞台大小:300*260。
2.將組件MediaController和MediaDisplay拖入舞台,然後從舞台上刪除。這樣做的目的是將這兩個組件載入庫中,為接下來用attachMovie()方法將MediaController和MediaDisplay組件載入舞台做好準備。
3.建立一層,命名為function。在該層的第一幀上輸入如下AS代碼:
function init(){
flagNum = 1;
//播放影片的標示
flvNum = 0;
attachController();
};
//將MediaController和MediaDisplay組件載入舞台並初始化
function attachController(){
//將MediaDisplay組件載入舞台並給定義執行個體名 "flvContainer" + flagNum
_root.attachMovie("MediaDisplay","flvContainer" + flagNum,2);
//設定組件初始參數
with(_root["flvContainer" + flagNum]){
_x = 0;
_y = 0;
setMedia(myArray[flvNum],"FLV");//設定播放格式可以mp3等
}
//將MediaController組件載入舞台並給定義執行個體名 "flvController" + flagNum
_root.attachMovie("MediaController","flvController" + flagNum,1);
//設定組件初始參數
with(_root["flvController" + flagNum]){
_x = 0;
_y = 190;
activePlayControl = false;
controllerPolicy = "on";
//將MediaController和MediaDisplay組件相關聯
associateDisplay(_root["flvContainer" + flagNum]);
};
};
function playNext(){
//將MediaController和MediaDisplay組件從舞台上刪除
_root["flvController" + flagNum].removeMovieClip();
_root["flvContainer" + flagNum].removeMovieClip();
flagNum += 1;
flvNum += 1;
//如果播放至影片的最後一首,將flvNum = 0,意為將從頭開始播放
if(flvNum == flvTotal) flvNum = 0;
//重新載入MediaController和MediaDisplay組件,並給一新的執行個體名
attachController();
//因為每播放完一個影片後MediaController和MediaDisplay組件從舞台上被卸載
//然後又重新載入MediaController和MediaDisplay組件並給了另外一個執行個體名
_root["flvContainer" + flagNum].addEventListener("complete", myListener);
};
4.建立一層,命名為action,在該層第一幀輸入一下AS代碼:
stop();
//數組myArray用來儲存 載入的XML文檔中的影片名稱
var myArray = new Array();
//影片的總數
var flvTotal:Number;
var myXml = new XML();
myXml.ignoreWhite = true;
myXml.load("list.xml");
myXml.onLoad = function() {
var e = myXml.firstChild.childNodes;
flvTotal = e.length;
for (var i = 0; i<flvTotal; i++) {
myArray.push(e[i].attributes["title"]);
}
init();
_root["flvContainer"+flagNum].addEventListener("complete", myListener);
};
var myListener = new Object();
myListener.complete = function(eventObject) {
playNext();
};
用記事本寫入下面內容作為播放清單,儲存為list.xml:
<?xml version="1.0" encoding="utf-8" ?>
- <flvLists>
<item title="http://littleredflowers.com/shipin/yugao.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-01.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-02.flv" />
<item title="http://littleredflowers.com/shipin/huaxu-03.flv" />
</flvLists>
相關源碼下載 點擊下載此檔案
方法二
我們將製作的這個FLV播放器由這樣幾部分組成:
一個用於顯示視頻映像的視頻對象,
三個分別用於播放、暫停和停止視頻的按鈕,
以及一個用於顯示緩衝區裝載進度的動態文本。
1. 建立三個按鈕元件,分別命名為“播放”、“暫停”、“停止”,將其各自一個執行個體拖放到情境舞台中。
2. 建立一個視頻元件,將其一個執行個體拖放到情境舞台中,並賦予其執行個體名myVideo。
3. 在情境舞台中放置一個動態文本,賦予其執行個體名myText。
4. 在根時間軸的第1幀中捆綁下面的指令碼:
//建立一個NetConnection對象。
myFLVConnection=new NetConnection();
//建立一個流串連。
myFLVConnection.connect(null);
//建立一個NetStream對象。
//myFLVConnection被指定給該NetStream對象。
myFLVStream=new NetStream(myFLVConnection);
//myFLVStream被捆綁到Video對象myVideo:
myVideo.attachVideo(myFLVStream);
//設定緩衝時間。
myFLVStream.setBufferTime(10);
分析這段指令碼,首先我建立了一個NetConnection對象myFLVConnection,然後我調用NetConnection對象的connect()方法開啟了一個流串連,在調用connect()方法時你必須傳遞給它一個null值作為參數。
接下來,我利用myFLVStream=new
NetStream(myFLVConnection);這行代碼建立了一個NetStream對象myFLVStream,在建立時我就需要把為該“流
”提供的“串連”告知它,即把myFLVConnection對象作為參數傳遞給NetStream類的建構函式。
之後,我把myFLVStream(“流”)捆綁到Video對象myVideo。然後,我還用NetStream類的setBufferTime()方法以秒為單位指定了一個緩衝時間,即要在緩衝區中裝入可供播放多長時間的資料後才開始播放。
5. 在“播放”按鈕執行個體上捆綁下面的指令碼:
on(release){
//裝載並播放FLV檔案。
myFLVStream.play("myFLV.flv");
//定義bufferLoad函數以供setInterval函數調用來顯示緩衝進度。
function bufferLoad(){
//在動態文本中顯示緩衝區的裝載進度。
myText.text="緩衝區已裝載"+int((myFLVStream.bytesLoaded/myFLVStream.bytesTotal)*100)+"%";
}
//設定時間間隔。
setInterval(bufferLoad,20);
}
這行代碼—myFLVStream.play("myFLV.flv");用來裝載和播放FLV檔案。如果你的FLV檔案位於某個HTTP地址或本地檔案系統的某處,你可以使用http://或file://這樣的格式作為路徑的首碼來指定FLV檔案的位置。
這個運算式—myFLVStream.bytesLoaded/myFLVStream.bytesTotal用來檢查緩衝區已裝載的位元組占緩衝區要裝載的總位元組的比值。bytesLoaded和bytesTotal是NetStream類的兩個屬性。
6. 在“暫停”按鈕執行個體上捆綁下面的指令碼:
on(release){
//暫停FLV檔案。
myFLVStream.pause();
}
7. 在“停止”按鈕執行個體上捆綁下面的指令碼:
on(release){
//停止FLV檔案並同時刪除下載的FLV檔案。
myFLVStream.close();
}
8. 製作完成。你應該在你的網站中測試這個FLV播放器。