众所周知,flash是无法直接获得一首未完全下载完的mp3的总长度。然而在flash的Sound类中有二个方法和一个属性对获取mp3的总长度很有用。
Sound.getBytesLoaded() 返回为指定声音加载的字节数。
Sound.getBytesTotal() 以字节为单位返回声音的大小。
Sound.duration 已加载的声音的长度,以毫秒为单位。
所以可以用这样的方法来计算mp3的总长度
var mySound = new Sound();
//add your song and code
_root.onEnterFrame = function() {
duration = mySound.duration;
bytesTotal = mySound.getBytesTotal();
bytesLoaded = mySound.getBytesLoaded();
totalTime = (duration*bytesTotal)/bytesLoaded;
trace(totalTime)
};
当然由于精度问题,不可能在刚开始加载时就准确的算出总长度,但是这个误差一般不超过3%而且随着下载进度会越来越精确。