papercats/rolling.js
2017-03-02 22:38:29 +00:00

28 lines
488 B
JavaScript

function Rolling(value, frames)
{
var lag = 0;
if (!frames)
frames = 24;
this.value = value;
Object.defineProperty(this, "lag", {
get: function() { return lag; },
enumerable: true
});
this.update = function() {
var delta = this.value - lag;
var dir = Math.sign(delta);
var speed = Math.abs(delta) / frames;
var mag = Math.min(Math.abs(speed), Math.abs(delta));
lag += mag * dir;
return lag;
}
}
module.exports = Rolling;