![](/img/trans.png)
[英]How do I know how much of a video is loaded by a NetStream in 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”
因此,也許在代碼的其他位置創建 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.