若要预加载 MP3 和 FLV 文件,可以使用 setInterval()
函数创建“轮询”机制,该机制以预先确定的时间间隔检查为 Sound 或 NetStream 对象加载的字节数。若要跟踪 MP3 文件的下载进度,可以使用 Sound.getBytesLoaded()
和 Sound.getBytesTotal()
方法;若要跟踪 FLV 文件的下载进度,可以使用 NetStream.bytesLoaded
和 NetStream.bytesTotal
属性。
以下代码使用 setInterval()
以预先确定的时间间隔检查为 Sound 或 NetStream 对象加载的字节数。
// 创建一个新的 Sound 对象来播放声音。 var songTrack = new Sound(); // 创建一个跟踪下载进度的轮询函数。 // 这是进行轮询的函数。它检查 // 作为引用传递的 Sound 对象的下载进度。 checkProgress = function (soundObj) { var bytesLoaded = soundObj.getBytesLoaded(); var bytesTotal = soundObj.getBytesTotal(); var percentLoaded = Math.floor(bytesLoaded/bytesTotal * 100); trace("%" + percentLoaded + " loaded."); } // 当文件完成加载之后,清除间隔轮询。 songTrack.onLoad = function () { clearInterval(poll); } // 加载 MP3 流文件并开始调用 checkProgress() songTrack.loadSound("beethoven.mp3", true); var poll = setInterval(checkProgress, 1000, songTrack);
您可以使用同类轮询方法预加载外部 FLV 文件。若要获取总字节数和当前为 FLV 文件加载的字节数,请使用 NetStream.bytesLoaded
和 NetStream.bytesTotal
属性。
预加载 FLV 文件的另一种途径是使用 NetStream.setBufferTime()
方法。此方法采用单个参数,该参数指示回放开始前 FLV 流进行下载的秒数。
有关更多信息,请参见 MovieClip.getBytesLoaded()、MovieClip.getBytesTotal()、NetStream.bytesLoaded、NetStream.bytesTotal、NetStream.setBufferTime()、setInterval()、Sound.getBytesLoaded() 和 Sound.getBytesTotal()。