簡體   English   中英

AS3 - 如何知道視頻是否已經結束?

[英]AS3 - How to know if a video has ended?

我正在使用 flash.net.NetStream 和 flash.media.Video 播放 a.flv,這是一些代碼:

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:對不起我的英語不好。

Bartek的答案是最准確的,但我發現我需要的代碼是"NetStream.Play.Stop"

代碼"NetStream.Play.Complete"不存在。

stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged);

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

這是有效的,因為您無法停止 stream,只能暫停它(並恢復它),因此出現此狀態的唯一方法是結束視頻播放(這就是我需要的)

PS:對不起我的英語不好。

我需要的代碼是:

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

(我必須做的唯一改變是將 Play.Stop 更改為 Buffer.Empty)

我相信您會想在您的 stream.client object 中添加另一個 function,稱為“onPlayStatus”

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

因此,也許在代碼的其他位置創建 function,然后像這樣引用它:

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

只需為 NET_STATUS 添加事件偵聽器:

stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM