Вход Регистрация
Файл: Space race/bkcore.coffee/Timer.js
Строк: 100
<?php
// Generated by CoffeeScript 1.4.0

/*
 new Date().getTime() wrapper to use as timer.

 @class bkcore.Timer
 @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
*/


(function() {
  var 
Timer, exports;

  
Timer = (function() {
    
/*
        Creates a new timer, inactive by default.
        Call Timer.start() to activate.
    */

    
function Timer() {
      
this.time = {
        
start: 0,
        
current: 0,
        
previous: 0,
        
elapsed: 0,
        
delta: 0
      
};
      
this.active = false;
    }

    
/*
        Starts/restarts the timer.
    */


    
Timer.prototype.start = function() {
      var 
now;
      
now = (new Date).getTime();
      
this.time.start = now;
      
this.time.current = now;
      
this.time.previous = now;
      
this.time.elapsed = 0;
      
this.time.delta = 0;
      return 
this.active = true;
    };

    
/*
        Pauses(true)/Unpauses(false) the timer.
    
        @param bool Do pause
    */


    
Timer.prototype.pause = function(doPause) {
      return 
this.active = !doPause;
    };

    
/*
        Update method to be called inside a RAF loop
    */


    
Timer.prototype.update = function() {
      var 
now;
      if (!
this.active) {
        return;
      }
      
now = (new Date).getTime();
      
this.time.current = now;
      
this.time.elapsed = this.time.current - this.time.start;
      
this.time.delta = now - this.time.previous;
      return 
this.time.previous = now;
    };

    
/*
        Returns a formatted version of the current elapsed time using msToTime().
    */


    
Timer.prototype.getElapsedTime = function() {
      return 
this.constructor.msToTime(this.time.elapsed);
    };

    
/*
        Formats a millisecond integer into a h/m/s/ms object
        
        @param x int In milliseconds
        @return Object{h,m,s,ms}
    */


    
Timer.msToTime = function(t) {
      var 
h, m, ms, s;
      
ms = t % 1000;
      
s = Math.floor((t / 1000) % 60);
      
m = Math.floor((t / 60000) % 60);
      
h = Math.floor(t / 3600000);
      return {
        
h: h,
        
m: m,
        
s: s,
        
ms: ms,
        
ms: ms
      
};
    };

    
/*
        Formats a millisecond integer into a h/m/s/ms object with prefix zeros
        
        @param x int In milliseconds
        @return Object<string>{h,m,s,ms}
    */


    
Timer.msToTimeString = function(t) {
      var 
time;
      
time = this.msToTime(t);
      
time.h = this.zfill(time.h, 2);
      
time.m = this.zfill(time.m, 2);
      
time.s = this.zfill(time.s, 2);
      
time.ms = this.zfill(time.ms, 3);
      return 
time;
    };

    
/*
        Convert given integer to string and fill with heading zeros
    
        @param num int Number to convert/fill
        @param size int Desired string size
    */


    
Timer.zfill = function(num, size) {
      var 
len;
      
len = size - num.toString().length;
      if (
len > 0) {
        return new Array(
len + 1).join('0') + num;
      } else {
        return 
num.toString();
      }
    };

    return 
Timer;

  })();

  
/*
    Exports
    @package bkcore
  */


  
exports = exports != null ? exports : this;

  
exports.bkcore || (exports.bkcore = {});

  
exports.bkcore.Timer = Timer;

}).
call(this);
?>
Онлайн: 0
Реклама