闪光灯中的无缝声音循环

时间:2012-09-25 18:14:08

标签: actionscript-3 flash audio

我做了一个无限循环播放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循环吗?

  • 导航 = 开头的差距为ms (在我的情况下为27.375ms)
  • 跟踪 = 以ms为结尾的差距(在我的情况下为20.278ms)

1 个答案:

答案 0 :(得分:2)

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

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

  1. 让.wav格式的声音从开头和结尾的沉默中完全修剪
  2. 将其导入Flash的库并将其导出为ActionScript(作为低文件大小的mp3)
  3. 只需创建一个新的声音实例并使用Sound.play()播放它并指定循环次数作为第二个参数(对于大多数用途来说,一个非常大的整数几乎使它“无限”)。
  4. 还有一些可能感兴趣的更强大的解决方案: Prefered method for looping sound flash as3