我使用以下方法以 X 次/分钟发送声音(X 通过 bpm 确定,它是一个 NumericStepper 对象)
var mainTimer:Timer = new Timer(60 / (bpm.value * 1000),0);
mainTimer.addEventListener(TimerEvent.TIMER, fl_TimerHandler,false, 0, true);
mainTimer.start();
function fl_TimerHandler(event:TimerEvent):void
{
metroTransform.volume = vol;
flash.media.SoundMixer.soundTransform = metroTransform;
metroChannel = metro.play();
mainTimer.delay = 60 / bpm.value * 1000;
}
根据这个http://www.metronomeonline.com/ http://www.metronomeonline.com/声音坐得不太好。我可以做些什么来解决我陷入的这个问题吗?
我得到的输出文件的路径:http://conatur.net/metroBig.swf http://conatur.net/metroBig.swf
http://cookbooks.adobe.com/post_Accurate_timer-17332.html http://cookbooks.adobe.com/post_Accurate_timer-17332.html可能对你有帮助。
Problem
定时器类的两个事件之间的延迟取决于许多因素(fps、内存、播放的影片剪辑结束等)。设置为计时器类属性延迟的超时只是近似值,因此需要有一种方法来提高计时器的准确性。
Solution
我提高准确性的解决方案是扩展计时器类并强制计时器根据自定义属性准确地进行更多周期。这样定时器的2个事件之间的延迟将被设置为延迟-+精确/2。因为事件的上升取决于许多因素,所以两个事件之间的真正延迟是:延迟 - 准确/2 到 Flash 播放器的下一个触发事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)