使用javascript准确计时

时间:2011-12-19 07:24:49

标签: javascript timing

我正在使用Soundmanager2库处理一个html5声音推子小部件,我有一个函数应该设置一个变量,在15秒内插入0-100之间,但第一次需要超过15秒之后每次都少了。这种不一致让我疯狂。

我的js在这里: http://wesww.com/nic/peasoup9/js/soundfader.js

CODE: 我设定了15秒的持续时间:

function fadeOutSound(soundObject) {
    var fadeLengthInSeconds = 15;

我在这里做一些数学:

if(soundObject.volume < maximumVolume) {
    var progressRatio = deltaTime / soundObject.fadeLength;
    var actualProgress = progressRatio * maximumVolume;
    soundObject.setVolume( soundObject.volume + actualProgress );

感谢您提供的任何帮助/提示!如果我可以添加任何信息/代码以使更清楚,请告诉我

编辑:我最终选择了自我调整计时器,例如:http://www.sitepoint.com/creating-accurate-timers-in-javascript/

2 个答案:

答案 0 :(得分:0)

你可能想看一下这个部门。 我怀疑有这样的错误:

10/3 = 3

其中所有数字都被转换为整数。

答案 1 :(得分:0)

根据定义,JavaScript中的所有数字都是64位浮点数。然而,各种JavaScript引擎通常会在可能的情况下将它们类型转换为更简单的数字格式(我很确定至少V8会这样做。)

虽然我自己没有玩过它,但似乎Typed Arrays目前是使数学在更大范围内表现的最佳技巧。但它仅适用于“现代”浏览器。