控制视频播放Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 NetStream 类提供了四个用于控制视频播放的主要方法: pause():暂停播放视频流。如果视频已经暂停,则调用此方法将不会执行任何操作。 resume():恢复播放已暂停的视频流。如果视频已在播放,则调用此方法将不会执行任何操作。 seek():搜索与指定位置(从流的开始处算起的偏移,以秒为单位)最靠近的关键帧。 togglePause():暂停或恢复播放流。 注: 没有 stop() 方法。为了停止视频流,必须暂停播放并找到视频流的开始位置。
注: play() 方法不会恢复播放,它用于加载视频文件。
以下示例演示如何使用多个不同的按钮控制视频。若要运行下面的示例,请创建一个新文档,并在工作区中添加 4 个按钮实例(pauseBtn、playBtn、stopBtn 和 togglePauseBtn): var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); ns.play("video.flv"); function asyncErrorHandler(event:AsyncErrorEvent):void { // ignore error } var vid:Video = new Video(); vid.attachNetStream(ns); addChild(vid); pauseBtn.addEventListener(MouseEvent.CLICK, pauseHandler); playBtn.addEventListener(MouseEvent.CLICK, playHandler); stopBtn.addEventListener(MouseEvent.CLICK, stopHandler); togglePauseBtn.addEventListener(MouseEvent.CLICK, togglePauseHandler); function pauseHandler(event:MouseEvent):void { ns.pause(); } function playHandler(event:MouseEvent):void { ns.resume(); } function stopHandler(event:MouseEvent):void { // Pause the stream and move the playhead back to // the beginning of the stream. ns.pause(); ns.seek(0); } function togglePauseHandler(event:MouseEvent):void { ns.togglePause(); } 播放视频的同时单击 pauseBtn 按钮实例会导致视频文件暂停。如果视频已经暂停,则单击此按钮不会执行任何操作。如果之前暂停了播放,则单击 playBtn 按钮实例会恢复视频播放;如果视频已在播放,则单击该按钮不会执行任何操作。 检测视频流的末尾为了侦听视频流的开始和末尾,需要向 NetStream 实例添加一个事件侦听器以侦听 netStatus 事件。以下代码演示如何在视频播放过程中侦听不同代码: ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); function statusHandler(event:NetStatusEvent):void { trace(event.info.code) } 上面这段代码的输出如下: NetStream.Play.Start NetStream.Buffer.Empty NetStream.Buffer.Full NetStream.Buffer.Empty NetStream.Buffer.Full NetStream.Buffer.Empty NetStream.Buffer.Full NetStream.Buffer.Flush NetStream.Play.Stop NetStream.Buffer.Empty NetStream.Buffer.Flush 您要专门侦听的两段代码为“NetStream.Play.Start”和“NetStream.Play.Stop”,它们会在视频播放的开始和末尾发出信号。下面的代码片断使用 switch 语句来过滤这两段代码并输出一条消息: function statusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetStream.Play.Start": trace("Start [" + ns.time.toFixed(3) + " seconds]"); break; case "NetStream.Play.Stop": trace("Stop [" + ns.time.toFixed(3) + " seconds]"); break; } } 通过侦听 netStatus 事件 (NetStatusEvent.NET_STATUS),您可以生成一个视频播放器,它在当前视频完成播放后加载播放列表中的下一个视频。 |
|