加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何在仍在加载的Sound对象上获取最终长度?

发布时间:2020-12-15 07:26:20 所属栏目:百科 来源:网络整理
导读:我在ActionScript 3中创建了一个基本的MP3播放器.我有一个基本的进度条,可以显示该歌曲的播放量.进度计算为在0和1之间归一化的十进制百分比,如下: var progress:Number = channel.position / sound.length; 问题是,如果音频仍在加载/缓冲声音.长度不正确.这
我在ActionScript 3中创建了一个基本的MP3播放器.我有一个基本的进度条,可以显示该歌曲的播放量.进度计算为在0和1之间归一化的十进制百分比,如下:

var progress:Number = channel.position / sound.length;

问题是,如果音频仍在加载/缓冲声音.长度不正确.这会导致我的进度条跳过,甚至向后移动,直到声音完全加载并且sound.length不再变化.

确定仍在加载的声音对象的最终长度的最佳方法是什么?

解决方法

至少有两种选择:

1:将进度条保留为0%,并且在声音完全加载之前不要移动它.那是:

sound.addEventListener(Event.COMPLETE,onSoundComplete);

private function onSoundComplete(event:Event):void {
    // Calculate progress
}

2:基于已加载文件百分比的近似百分比.像这样的东西:

private var _sound:Sound = /* Your logic here */;
private var _channel:SoundChannel = _sound.play();

_sound.addEventListener(ProgressEvent.PROGRESS,onSoundProgress);

private function onSoundProgress(event:ProgressEvent):void {
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
    var approxProgress:Number
        = _channel.position / _sound.length * percentLoaded;
    // Update your progress bar based on approxProgress
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读