我正在使用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/
答案 0 :(得分:0)
你可能想看一下这个部门。 我怀疑有这样的错误:
10/3 = 3
其中所有数字都被转换为整数。
答案 1 :(得分:0)
根据定义,JavaScript中的所有数字都是64位浮点数。然而,各种JavaScript引擎通常会在可能的情况下将它们类型转换为更简单的数字格式(我很确定至少V8会这样做。)
虽然我自己没有玩过它,但似乎Typed Arrays目前是使数学在更大范围内表现的最佳技巧。但它仅适用于“现代”浏览器。