我有一个计数投票的柜台。但是,我只是从服务器那里拉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。
谢谢!
答案 0 :(得分:0)
如何将指数过滤器应用于您的费率?那是
smoothed_rate = (current_rate + c*smoothed_rate) / (1+c)
这为您提供了一个参数c来调整平滑。 c = 0 - >根本没有平滑。更大的c - >更平滑。
如果您想平滑费率变化,请引入更多积分。您无需额外的服务器往返。只要复制你得到的东西。例如。如果计算速率x持续30秒,则假设3个速率为x的间隔为10秒,并对其应用平滑。这为您提供了更高的顺序平滑,几乎不需要额外的努力。