在javascript中查找两行之间的曲线

时间:2013-02-20 21:29:22

标签: javascript counter easing

我有一个计数投票的柜台。但是,我只是从服务器那里拉30秒。我希望它在前端看起来相当一致,所以我写了一个小脚本来跟踪增加并给它一个很好的线性增加投票,每秒多次。

然而,我似乎无法在不同的速率之间转换 - 我的大脑锁定过去线性。

示例: 让我们说我们有100票。

预计投票将在接下来的30秒内增加60,或每1秒2票(2/1)。我已经走得那么远了。

我们以30秒的优势结束,获得160票的线性收益。

现在,预计下一个片段将在30秒内增加20或每3秒增加2票(2/3)。

而不是投票率突然下降,我希望平稳过渡率30秒后我将获得正确的(180)总投票,反击减速(或加速,相应)而不是仅仅突然改变线性收益。

var t = 0;
function upCount(){
  $("#votecount").text(Math.floor(current + nextInc*(t/60));
  t++;
}

current是服务器报告的当前投票数,nextInc是预计在接下来的30秒内投票数。

t是“时间”,每次从服务器拉出ajax都会重置为零。这是在500毫秒的间隔内。

也许我一切都错了。欢迎疯狂的想法。如果有帮助,我可以在这里使用jQuery。

谢谢!

1 个答案:

答案 0 :(得分:0)

如何将指数过滤器应用于您的费率?那是

smoothed_rate = (current_rate + c*smoothed_rate) / (1+c)

这为您提供了一个参数c来调整平滑。 c = 0 - >根本没有平滑。更大的c - >更平滑。

如果您想平滑费率变化,请引入更多积分。您无需额外的服务器往返。只要复制你得到的东西。例如。如果计算速率x持续30秒,则假设3个速率为x的间隔为10秒,并对其应用平滑。这为您提供了更高的顺序平滑,几乎不需要额外的努力。