我正在使用flash.net.NetStream和flash.media.Video播放.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:抱歉我的英语不好。
答案 0 :(得分:14)
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');
}
}
这是有效的,因为你不能停止流,只是暂停它(并恢复它),所以出现这种状态的唯一方法是结束视频播放到达终点(这就是我需要的)
PS:抱歉我的英语不好。
答案 1 :(得分:1)
我需要的代码是:
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)
答案 2 :(得分:0)
我相信你会想要为你的stream.client对象添加另一个函数,称为'onPlayStatus'
因此,或许在代码中的其他位置创建函数,然后像这样引用它:
function myFunction(obj:Object):void
{
//do something here
}
stream.client = {onPlayStatus: myFunction}
答案 3 :(得分:0)
只需为NET_STATUS添加事件监听器:
stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged);
function statusChanged(stats:NetStatusEvent) {
if (stats.info.code == 'NetStream.Play.Complete') {
// do some stuff
}
}