pixelbutler
Version:
Low-res bitmap render engine for big screens
72 lines (71 loc) • 1.65 kB
JavaScript
;
function interval(callback, fps) {
var intervalID = 0;
var frame = 0;
var prev = performance.now();
function step() {
if (intervalID) {
frame++;
var now = performance.now();
callback(frame, now - prev);
prev = now;
}
}
var that = {};
that.start = function () {
if (intervalID) {
clearInterval(intervalID);
}
intervalID = setInterval(step, 1000 / fps);
};
that.step = function () {
step();
};
that.stop = function () {
if (intervalID) {
clearInterval(intervalID);
intervalID = 0;
}
};
that.isRunning = function () {
return !!intervalID;
};
return that;
}
exports.interval = interval;
function request(callback) {
var running = false;
var frame = 0;
var prev = performance.now();
function step() {
if (running) {
frame++;
var now = performance.now();
callback(frame, now - prev);
prev = now;
requestAnimationFrame(step);
}
}
var requestID;
var that = {};
that.start = function () {
if (!running) {
running = true;
requestID = requestAnimationFrame(step);
}
};
that.step = function () {
step();
};
that.stop = function () {
if (running) {
running = false;
cancelAnimationFrame(requestID);
}
};
that.isRunning = function () {
return running;
};
return that;
}
exports.request = request;