UNPKG

pixelbutler

Version:

Low-res bitmap render engine for big screens

72 lines (71 loc) 1.65 kB
'use strict'; 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;