2007
03.09

FLV與NetStram播放完畢判斷 part II

[此文章ActionSctipt2.0與ActionScript3.0共用] 

接續這[FLV與NetStram播放完畢判斷 part I]這篇文章,今天我們來繼續談下去,要如何搞定NetStream的播放完畢事件,我們來看看下圖,下圖是一個已經完成的範例所trace出來的文字,我故意將trace出來的表示結構設置成 Event:Code ,這樣比較方便我們辨識是由哪個事件傳回哪些碼回來。

 trace

首先來看看NetStream.Buffer.Flush的code被傳回來以後,代表他已經假性結束(這在PartI講過了),但是後面還會傳一次NetStream.Buffer.Empty代表真正的把影片給播放完畢 ,這時候你能代表他真正的撥完,所以您可以先把NetStream.Buffer.Flush傳回來時先記錄一個Flag,然後當NetStream.Buffer.Empty傳回時去檢查這個Flag是正確就可以了,不過真的要搞的這麼麻煩嗎?

等等,在NetStream.Buffer.Flush和NetStream.Buffer.Empty之間您有沒有發現好像還有一個NetStream.Play.Complete的Code,莫非它就是我們的一現生機?沒錯,就是這個NetStream.Play.Complete,您會發現若您改用onPlayStatus事件,就可以得到這個Code,太好了,終於不用在判斷是否播放完畢的問題來苦惱了,這個事件在Flash的help或liveDoc裡面是找不到的,先跟大家說一聲,免得大家找破腦袋。

後來我無意間發現,網路上如果找onPlayStatus的話,會有一堆人在問為什麼他用了該事件後不能觸發,結果幾乎都是石沉大海沒人回答,好吧,我來解釋一下,如果您播放的是本機端的FLV檔,NetStream是不會去觸發onPlayStatus的,所以當您是連接Flash Media Server來串流影片時,才會有該事件,這就是答案囉。

P.S. onPlayStatus事件我是在Flash Media Server的help裡看到的,所以會這樣也就不奇怪了。


相關文章:
  • FLV與NetStram播放完畢判斷 part I
  • 深入淺出 Flash Media Server (RTMP)介紹 part VI – 使用WebCam
  • 深入淺出 Flash Media Server (RTMP)介紹 part V – Play & Stream
  • 深入淺出 Flash Media Server (RTMP)介紹 part IV – 建立新連線
  • Bitmap與BitmapData
  • 本文引用:
    文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。

    2 comments so far

    Add Your Comment
    1. Dear Rien:
      很高興你找到解答了. :)

    2. 真不知道NetStream.Play.Complete这个CODE,以为为如何判断播放完毕脑浆迸射了。Thanks