若要跟踪 FLV 文件的下载进度,请使用 NetStream.bytesLoaded 和 NetStream.bytesTotal 属性。若要获取 FLV 文件的总字节数和当前下载的字节数,请使用 NetStream.bytesLoaded 和 NetStream.bytesTotal 属性。
下面的示例使用 bytesLoaded 和 bytesTotal 属性显示将 video1.flv 加载到名为 my_video 的视频对象实例中的进度。将动态创建一个名为 loaded_txt 的文本字段,以便显示有关加载进度的信息。
代码: var connection_nc:NetConnection = new NetConnection();connection_nc.connect(null);var stream_ns:NetStream = new NetStream(connection_nc);my_video.attachVideo(stream_ns);stream_ns.play("http://www.helpexamples.com/flash/video/lights_short.flv");this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10, 160, 22);var loaded_interval:Number = setInterval(checkBytesLoaded, 500, stream_ns);function checkBytesLoaded(my_ns:NetStream) { var pctLoaded:Number = Math.round(my_ns.bytesLoaded / my_ns.bytesTotal * 100); loaded_txt.text = Math.round(my_ns.bytesLoaded / 1000) + " of " + Math.round(my_ns.bytesTotal / 1000) + " KB loaded (" + pctLoaded + "%)"; progressBar_mc.bar_mc._xscale = pctLoaded; if (pctLoaded >= 100) { clearInterval(loaded_interval); }}
|
10.选择"控制">"测试影片",对代码进行测试。
注意 |
| 如果进度条立刻走完,则表明视频被缓存到了硬盘上(可能是早已测试过此示例,也可能在其它过程中早已加载了它)。如果发生这种情况,请将 FLV 文件上载到服务器,然后再加载。 |
预加载 FLV 文件的另一种途径是使用 NetStream.setBufferTime() 方法。此方法采用单个参数,该参数指示回放开始前 FLV 流进行缓冲的秒数。有关更多信息,请参见《ActionScript 2.0 语言参考》中的 setBufferTime(NetStream.setBufferTime 方法)、getBytesLoaded(MovieClip.getBytesLoaded 方法)、getBytesTotal(MovieClip.getBytesTotal 方法)、bytesLoaded(NetStream.bytesLoaded 属性)、bytesTotal(NetStream.bytesTotal 属性)和 setInterval 函数。