Reputation: 41570
I'm using flash.net.NetStream and flash.media.Video to play a .flv, here is some code:
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);
That plays the video, but how I can know WHEN the video has played from the beginning to the end? How to know if the video was played ALL it's length?
PS: Sorry for my bad English.
Upvotes: 5
Views: 12469
Reputation: 5520
The code I need was:
public function statusChanged(stats:NetStatusEvent):void
{
trace(stats.info.code);
if (stats.info.code == 'NetStream.Buffer.Empty')
{
trace('the video has ended');
}
}
(the only change I had to make was Changing Play.Stop to Buffer.Empty)
Upvotes: 1
Reputation: 41570
Bartek answer is the most accurate but I've found that the code I need is "NetStream.Play.Stop"
The code "NetStream.Play.Complete"
doesn't exist.
stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged);
function statusChanged(stats:NetStatusEvent) {
if (stats.info.code == 'NetStream.Play.Stop') {
trace('the video has ended');
}
}
This works since you can't STOP the stream, only pause it (and resume it), so the only way to this status arise is to end the video playback reaching the end (and that's what I need)
PS: Sorry for my bad English.
Upvotes: 14
Reputation: 1996
Just add event listener for NET_STATUS:
stream.addEventListener(NetStatusEvent.NET_STATUS, statusChanged);
function statusChanged(stats:NetStatusEvent) {
if (stats.info.code == 'NetStream.Play.Complete') {
// do some stuff
}
}
Upvotes: 0
Reputation: 534
I believe you'll want to add another function to your stream.client object, called 'onPlayStatus'
So create the function somewhere else in your code perhaps and then reference it like so:
function myFunction(obj:Object):void
{
//do something here
}
stream.client = {onPlayStatus: myFunction}
Upvotes: 0