Phaser.Time = function (game){ this.game = game; this.time = 0; this.prevTime = 0; this.now = 0; this.elapsed = 0; this.elapsedMS = 0; this.physicsElapsed = 0; this.physicsElapsedMS = 0; this.desiredFps = 60; this.suggestedFps = null ; this.slowMotion = 1; this.advancedTiming = false ; this.frames = 0; this.fps = 0; this.fpsMin = 1000; this.fpsMax = 0; this.msMin = 1000; this.msMax = 0; this.pauseDuration = 0; this.timeToCall = 0; this.timeExpected = 0; this.events = new Phaser.Timer(this.game, false ); this._frameCount = 0; this._elapsedAccumulator = 0; this._started = 0; this._timeLastSecond = 0; this._pauseStarted = 0; this._justResumed = false ; this._timers = [] ; } ; Phaser.Time.prototype = { boot: function (){ this._started = Date.now(); this.time = Date.now(); this.events.start(); } , add: function (timer){ this._timers.push(timer); return timer; } , create: function (autoDestroy){ if (typeof autoDestroy === 'undefined') { autoDestroy = true ; } var timer = new Phaser.Timer(this.game, autoDestroy); this._timers.push(timer); return timer; } , removeAll: function (){ for (var i = 0; i < _AN_Read_length('length', this._timers); i++ ){ this._timers[i].destroy(); } this._timers = [] ; this.events.removeAll(); } , update: function (time){ var previousDateNow = this.time; this.time = Date.now(); this.elapsedMS = this.time - previousDateNow; this.prevTime = this.now; this.now = time; this.elapsed = this.now - this.prevTime; this.timeToCall = Math.floor(Math.max(0, (1000 / this.desiredFps) - (this.timeCallExpected - time))); this.timeCallExpected = time + this.timeToCall; this._frameCount++ ; this._elapsedAccumulator += this.elapsed; if (this._frameCount >= this.desiredFps * 2) { this.suggestedFps = Math.floor(200 / (this._elapsedAccumulator / this._frameCount)) * 5; this._frameCount = 0; this._elapsedAccumulator = 0; } this.physicsElapsed = 1 / this.desiredFps; this.physicsElapsedMS = this.physicsElapsed * 1000; if (this.advancedTiming) { this.msMin = Math.min(this.msMin, this.elapsed); this.msMax = Math.max(this.msMax, this.elapsed); this.frames++ ; if (this.now > this._timeLastSecond + 1000) { this.fps = Math.round((this.frames * 1000) / (this.now - this._timeLastSecond)); this.fpsMin = Math.min(this.fpsMin, this.fps); this.fpsMax = Math.max(this.fpsMax, this.fps); this._timeLastSecond = this.now; this.frames = 0; } } if (!this.game.paused) { this.events.update(this.time); var i = 0; var len = _AN_Read_length('length', this._timers); while (i < len){ if (this._timers[i].update(this.time)) { i++ ; } else { this._timers.splice(i, 1); len-- ; } } } } , gamePaused: function (){ this._pauseStarted = Date.now(); this.events.pause(); var i = _AN_Read_length('length', this._timers); while (i-- ){ this._timers[i]._pause(); } } , gameResumed: function (){ this.time = Date.now(); this.pauseDuration = this.time - this._pauseStarted; this.events.resume(); var i = _AN_Read_length('length', this._timers); while (i-- ){ this._timers[i]._resume(); } } , totalElapsedSeconds: function (){ return (this.time - this._started) * 0.001; } , elapsedSince: function (since){ return this.time - since; } , elapsedSecondsSince: function (since){ return (this.time - since) * 0.001; } , reset: function (){ this._started = this.time; this.removeAll(); } } ; Phaser.Time.prototype.constructor = Phaser.Time;