elm/Examples/elm-js/Pong/FrameRateHelp.js
2012-08-17 16:38:41 +02:00

39 lines
No EOL
1,004 B
JavaScript

var FrameRate = function() {
var desiredFPS = 40;
var msPerFrame = 1000 / desiredFPS;
// Set the desired rate of frames per second.
// Default is 40 if no desiredFPS event is triggered.
document.addEventListener('desiredFPS', function(e) {
console.log(e.value);
desiredFPS = e.value;
msPerFrame = 1000 / desiredFPS;
});
var date = new Date();
var startTime = date.getTime();
var frameStart = startTime;
var frameEnd = startTime;
var timeoutID = 0;
// Trigger time events to try to maintain the desired FPS.
document.addEventListener('finished', function(evt) {
clearTimeout(timeoutID);
date = new Date();
frameEnd = date.getTime();
var diff = frameEnd - frameStart;
var waitTime = Math.max(msPerFrame-diff,3);
timeoutID = setTimeout(function() {
date = new Date();
frameStart = date.getTime();
var e = document.createEvent('Event');
e.initEvent('trigger', true, true);
e.value = (frameStart - startTime) / 1000;
document.dispatchEvent(e);
}, waitTime);
});
}();