1+ var NOOP = require ( '../utils/NOOP' ) ;
12var RequestAnimationFrame = require ( '../dom/RequestAnimationFrame' ) ;
23
34var TickerLoop = function ( game , framerate )
@@ -11,12 +12,16 @@ var TickerLoop = function (game, framerate)
1112
1213 this . lastUpdate = 0 ;
1314
15+ this . gap = 1 / ( framerate || 60 ) ;
1416 this . startTime = 0 ;
1517 this . elapsed = 0 ;
1618 this . time = 0 ;
1719 this . nextTime = 0 ;
1820 this . frame = 0 ;
19- this . fps = false ;
21+ this . overlap = 0 ;
22+ this . fps = framerate ;
23+
24+ this . callback = NOOP ;
2025
2126 this . lagThreshold = 500 ;
2227 this . adjustedLag = 33 ;
@@ -28,7 +33,12 @@ TickerLoop.prototype.constructor = TickerLoop;
2833
2934TickerLoop . prototype = {
3035
31- start : function ( fps , useRAF )
36+ toString : function ( )
37+ {
38+ return 'time: ' + this . time + ' elapsed: ' + this . elapsed + ' overlap: ' + this . overlap ;
39+ } ,
40+
41+ start : function ( useRAF , callback )
3242 {
3343 if ( this . started )
3444 {
@@ -41,13 +51,14 @@ TickerLoop.prototype = {
4151 this . startTime = Date . now ( ) ;
4252 this . lastUpdate = Date . now ( ) ;
4353
44- this . useRAF = ! ! this . game . config . forceSetTimeOut ;
54+ this . useRAF = useRAF ;
55+ this . callback = callback ;
4556
4657 this . raf . start ( this . step . bind ( this ) , useRAF ) ;
4758 } ,
4859
49- step : function ( manual ) {
50-
60+ step : function ( manual )
61+ {
5162 var elapsed = Date . now ( ) - this . lastUpdate ;
5263
5364 if ( elapsed > this . lagThreshold )
@@ -57,44 +68,22 @@ TickerLoop.prototype = {
5768
5869 this . lastUpdate += elapsed ;
5970
60- this . time = ( this . lastUpdate - this . startTime ) / 1000 ;
71+ var time = ( this . lastUpdate - this . startTime ) / 1000 ;
6172
6273 this . elapsed = elapsed ;
6374
64- var overlap = this . time - this . nextTime ;
75+ var overlap = time - this . nextTime ;
6576
66- // var elapsed = _getTime() - _lastUpdate,
67- // overlap, dispatch;
68- // if (elapsed > _lagThreshold) {
69- // _startTime += elapsed - _adjustedLag;
70- // }
71- // _lastUpdate += elapsed;
72- // _self.time = (_lastUpdate - _startTime) / 1000;
73- // overlap = _self.time - _nextTime;
77+ this . overlap = overlap ;
7478
75- if ( ! this . fps || overlap > 0 || manual )
79+ this . time = time ;
80+
81+ if ( overlap > 0 || manual )
7682 {
7783 this . frame ++ ;
78- this . nextTime += overlap + ( overlap >= this . gap ? 0.004 : this . gap - overlap ) ;
84+ this . nextTime += overlap + ( ( overlap >= this . gap ) ? 0.004 : this . gap - overlap ) ;
85+ this . callback ( elapsed ) ;
7986 }
80-
81- // if (!manual)
82- // {
83- // }
84-
85- // if (!_fps || overlap > 0 || manual === true) {
86- // _self.frame++;
87- // _nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap);
88- // dispatch = true;
89- // }
90- // if (manual !== true) { //make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.
91- // _id = _req(_tick);
92- // }
93- // if (dispatch) {
94- // _self.dispatchEvent(_tickWord);
95- // }
96-
97-
9887 } ,
9988
10089 tick : function ( )
@@ -133,7 +122,7 @@ TickerLoop.prototype = {
133122 this . lastUpdate = Date . now ( ) - this . lagThreshold + 5 ;
134123 }
135124
136- this . raf . start ( this . step . bind ( this ) , useRAF ) ;
125+ this . raf . start ( this . step . bind ( this ) , this . useRAF ) ;
137126
138127 this . running = true ;
139128
0 commit comments