![]() ![]() | |
若要预加载 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()。
![]() ![]() | |