NetStream 類別可提供控制視訊播放作業的四個主要方法:
pause()
:暫停播放視訊串流。如果已經暫停視訊,呼叫這個方法就不會有任何動作。
resume()
:繼續播放被暫停的視訊串流。如果視訊已經在播放,呼叫這個方法就不會有任何動作。
seek()
:尋找離指定位置 (與串流開頭之間的位移,以秒為單位) 最近的關鍵影格。
togglePause()
:暫停或繼續播放串流。
備註:
這個類別沒有
stop()
方法。若要停止串流,您必須暫停播放並搜尋至視訊串流的開頭。
備註:
play()
方法並不會繼續播放,它會用於載入視訊檔案。
下列範例將示範如何使用幾個不同的按鈕來控制視訊。若要執行下列範例,請建立新的文件,並在工作區中增加四個按鈕實體 (
pauseBtn
、
playBtn
、
stopBtn
以及
togglePauseBtn
):
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video.flv");
function asyncErrorHandler(event:AsyncErrorEvent):void
{
// ignore error
}
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseHandler);
playBtn.addEventListener(MouseEvent.CLICK, playHandler);
stopBtn.addEventListener(MouseEvent.CLICK, stopHandler);
togglePauseBtn.addEventListener(MouseEvent.CLICK, togglePauseHandler);
function pauseHandler(event:MouseEvent):void
{
ns.pause();
}
function playHandler(event:MouseEvent):void
{
ns.resume();
}
function stopHandler(event:MouseEvent):void
{
// Pause the stream and move the playhead back to
// the beginning of the stream.
ns.pause();
ns.seek(0);
}
function togglePauseHandler(event:MouseEvent):void
{
ns.togglePause();
}
視訊正在播放時,按一下
pauseBtn
按鈕實體會讓視訊檔案暫停播放。如果已經暫停視訊,按一下這個按鈕就不會有任何作用。如果之前已經暫停播放,按一下
playBtn
按鈕實體就會使視訊繼續播放;否則如果視訊已經播放,此按鈕就不會有任何作用。
偵測視訊串流的結尾
為了偵聽視訊串流的開頭與結尾,您必須將事件偵聽程式加入 NetStream 實體以偵聽
netStatus
事件。下列程式碼將示範如何偵聽整個視訊播放作業的各種程式碼:
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void
{
trace(event.info.code)
}
上述程式碼會產生下列輸出:
NetStream.Play.Start
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Empty
NetStream.Buffer.Full
NetStream.Buffer.Flush
NetStream.Play.Stop
NetStream.Buffer.Empty
NetStream.Buffer.Flush
您要特別偵聽的兩個程式碼是「NetStream.Play.Start」與「NetStream.Play.Stop」,分別是指視訊播放的開頭與結尾。下列程式碼片段會使用 switch 陳述式篩選兩個程式碼並追蹤訊息:
function statusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case "NetStream.Play.Start":
trace("Start [" + ns.time.toFixed(3) + " seconds]");
break;
case "NetStream.Play.Stop":
trace("Stop [" + ns.time.toFixed(3) + " seconds]");
break;
}
}
透過偵聽
netStatus
事件 (
NetStatusEvent.NET_STATUS
),您可以建立視訊播放程式,以便在目前的視訊完成播放時,立即載入播放清單中的下一個視訊。