2011-07-12 10 views
5

私はここに、.flvのを再生するためには、flash.net.NetStreamとflash.media.Videoを使用していますが、いくつかのコードです:ビデオを果たしているが、ビデオを再生したときに、私が知ることができる方法AS3 - 動画が終了したかどうかを確認する方法

var stream:NetStream = new NetStream(connection); 

//next line is to avoid an error message 
stream.client = {onMetaData: function(obj:Object):void {}} 

var video:Video = new Video(); 
video.attachNetStream(stream); 
stream.play("url.to/video"); 

addChild(video); 

最初から最後まで?ビデオが全部再生されたかどうかを知る方法それは長さですか?

PS:私の悪い英語を申し訳ありません。

私はので、おそらくあなたのコード内のどこか別の関数を作成して、そのようにそれを参照する

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#event:onPlayStatus

「onPlayStatus」と呼ばれる、あなたはstream.clientオブジェクトに別の機能を追加したいと思う信じる

答えて

14

Bartek答えが最も正確であるが、私は必要なコードが"NetStream.Play.Complete"が存在しない"NetStream.Play.Stop"

コードであることを発見しました。

stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged); 

function statusChanged(stats:NetStatusEvent) { 
    if (stats.info.code == 'NetStream.Play.Stop') { 
     trace('the video has ended'); 
    } 
} 

これは、あなたが流れを止めることはできないため、それだけを一時停止(そしてそれを再開)動作しますので、この状態への唯一の方法は、発生するには、最後に到達したビデオの再生を終了することである(そして、それは私が必要なものです)

PS:私の悪い英語のために申し訳ありません。

0

function myFunction(obj:Object):void 
{ 
    //do something here 
} 
stream.client = {onPlayStatus: myFunction} 
+0

それとも私が何か間違ったことを行っているか、私は知りません理由はありますが、関数が呼び出されることはありません。 –

+0

メタデータがファイルの先頭にエンコードされていることを確認してください –

0

ただNET_STATUSのイベントリスナーを追加します。

stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged); 

function statusChanged(stats:NetStatusEvent) { 
    if (stats.info.code == 'NetStream.Play.Complete') { 
     // do some stuff 
    } 
} 
+0

NetStatusEventのコード「NetStream.Play.Complete」はありません。実行ファイルではなく、ヘルプファイルにはなく、すべてのイベントをトレースし、最後に表示されるのは「NetStream.Play.Stop」だけです。 –

+2

@unkiwii「NetStream.play.stop」イベントを探している場合。そのイベントが発生すると、NetStream.timeがムービーの合計実行時間と等しいことを確認できます。それからあなたは映画が完成したのを知っています。 – Bakapii

1

私は必要なコードはでした:

 public function statusChanged(stats:NetStatusEvent):void 
     { 
      trace(stats.info.code); 
      if (stats.info.code == 'NetStream.Buffer.Empty') 
      { 
       trace('the video has ended'); 
      } 
     } 

(私がしなければならなかった唯一の変更はBuffer.EmptyにPlay.Stopを変更した)

+1

ビデオを完成する以外にも、バッファが空になることがあります。 –

関連する問題