我在Flash ActionScript 3中有一个播放器。我需要记录声音文件的总时间和声音文件的当前时间。 我的代码:
function onPlayProgress(evt:Event):void {
var sndLength:int = Math.ceil(snd.length /(snd.bytesLoaded / snd.bytesTotal));
var seekbar = 100 * (channel.position / sndLength);
playBar.seekbar.x = seekbar*5.8;
var _totalTime:Number = (((snd.length /(snd.bytesLoaded / snd.bytesTotal))*0.001/60));
现在是什么时候?
答案 0 :(得分:3)
我并不完全清楚你提供的代码示例正在尝试通信,但如果你想获得正在播放的声音的当前位置,你会做这样的事情:
protected var sound:Sound;
protected var soundChannel:SoundChannel;
protected function loadSound():void
{
sound = new Sound(new URLRequest("path_to_sound.mp3"));
sound.addEventListener(Event.COMPLETE, onSoundLoadComplete);
{
protected function onSoundLoadComplete(e:Event):void
{
sound.removeEventListener(Event.COMPLETE, onSoundLoadComplete);
soundChannel = sound.play();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
//Calculuate the sound time
protected function onEnterFrame(e:Event):void
{
var minutes:uint = Math.floor(soundChannel.position / 1000 / 60);
var seconds:uint = Math.floor(soundChannel.position / 1000) % 60;
trace('position: ' + minutes + ':' + seconds);
};
答案 1 :(得分:0)
我不这么认为。 sound.length不能作为总时间,它是加载流的总时间。如果你调试代码,你会发现sound.length正在改变,直到音频完全加载。 但是我还不知道总时间...... 我这样计算, estimatedTotalTimeLength = sound.bytesTotal / sound.bytesLoaded * sound.length;