Actionscript 3 闪光中的无间隙声环

Actionscript 3 闪光中的无间隙声环,actionscript-3,flash,audio,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); sCha

我做了一个函数,它无限循环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.375ms)
  • trail=末端的间隙,单位为ms(我的情况下为20.278ms)
使用TimerEvent循环将不够准确,因为Flash播放器中触发事件的方式

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

  • 将.wav格式的声音从开头和结尾的静音中完美地剪裁出来
  • 将其导入Flash的库中,并将其导出为ActionScript(对于较小的文件大小,作为mp3)
  • 只需创建一个新的声音实例,并使用sound.play()播放它,并指定循环多少次作为第二个参数(一个非常大的整数在大多数情况下几乎使其“无限”)
  • 还有一些更强大的解决方案可能会引起人们的兴趣:

    离这里有多远?就是这样吗。375毫秒?总是在变。在第一个循环中,这很好,但在第二个循环中,计时器似乎启动得更早。如果我跟踪计时器的延迟,它总是显示相同的数字。那有什么问题吗?从没想过。非常感谢。