闪光灯中的无间隙声音循环



我做了一个函数,无限循环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();
        }

此函数的问题在于它没有正确循环。虽然我的计算是正确的(从我的角度来看),但闪光灯不能正确计算位置。知道如何实现完美的mp3循环吗?

  • = 开始时的差距(以毫秒为单位)(在我的情况下为 27.375 毫秒)
  • 尾迹 = 末尾的间隙(以毫秒为单位)(在我的情况下为 20.278 毫秒)

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

玩无缝"无限"循环的最简单方法是:

  1. 在开始和结束时将.wav格式的声音完美地修剪为静音
  2. 将其导入到Flash的库中并将其导出为ActionScript(作为mp3表示文件大小较小)
  3. 只需创建一个新的声音实例并使用 Sound.play() 播放它,并指定循环多少次作为第二个参数(对于大多数目的来说,一个非常大的整数几乎使它"无限")。

还有更强大的解决方案可能会引起人们的兴趣:循环声音闪光灯as3的首选方法

最新更新