on fdaf8eb help sign in
elk/Examples/elm-js/FrameRate/FrameRateHelp.js
39 lines 1.0 kB history raw
2var FrameRate = function() {
4var desiredFPS = 40;
5var msPerFrame = 1000 / desiredFPS;
7// Set the desired rate of frames per second.
8// Default is 40 if no desiredFPS event is triggered.
9document.addEventListener('desiredFPS', function(e) {
10 console.log(e.value);
11 desiredFPS = e.value;
12 msPerFrame = 1000 / desiredFPS;
13 });
16var date = new Date();
17var startTime = date.getTime();
18var frameStart = startTime;
19var frameEnd = startTime;
20var timeoutID = 0;
22// Trigger time events to try to maintain the desired FPS.
23document.addEventListener('finished', function(evt) {
24 clearTimeout(timeoutID);
25 date = new Date();
26 frameEnd = date.getTime();
27 var diff = frameEnd - frameStart;
28 var waitTime = Math.max(msPerFrame-diff,3);
29 timeoutID = setTimeout(function() {
30 date = new Date();
31 frameStart = date.getTime();
32 var e = document.createEvent('Event');
33 e.initEvent('trigger', true, true);
34 e.value = (frameStart - startTime) / 1000;
35 document.dispatchEvent(e);
36 }, waitTime);
37 });
39}();