0

我做了一个函数,它无限循环播放 mp3 直到我停止它:

private function loopSound(a:Class, lead:Number, trail:Number) {
            var b = new a();
            var sChannel = new SoundChannel();
            var timer:Timer = new Timer(b.length - lead - trail, 1);
            sChannel = b.play(lead);
            timer.addEventListener(TimerEvent.TIMER_COMPLETE, function r(e:TimerEvent) { loopSound(a, lead, trail); } );
            timer.start();
        }

这个函数的问题是它不能正确循环。虽然我的计算是正确的(在我看来),但 flash 并没有正确计算位置。知道如何实现完美的 mp3 循环吗?

  • 领先=以毫秒为单位开始的间隙(在我的情况下为 27.375 毫秒)
  • trail =以毫秒为单位的最后间隙(在我的情况下为 20.278 毫秒)
4

1 回答 1

2

使用 TimerEvent 循环将不够准确,因为在 Flash Player 中触发事件的方式。

播放无缝“无限”循环的最简单方法是:

  1. 将 .wav 格式的声音完美地从开头和结尾的静音中剔除
  2. 将其导入到 Flash 的库中并将其导出为 ActionScript(为 mp3 以减少文件大小)
  3. 只需创建声音的新实例并使用 Sound.play() 播放它,并指定循环多少次作为第二个参数(对于大多数用途来说,一个非常大的整数几乎使它“无限”)。

还有可能感兴趣的更强大的解决方案: Prefered method for looping sound flash as3

于 2012-09-25T18:47:27.473 回答