控制視訊播放Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 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),您可以建立視訊播放程式,以便在目前的視訊完成播放時,立即載入播放清單中的下一個視訊。 |
|