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

/*
  TouchController (stick + buttons) for touch devices
  Based on the touch demo by Seb Lee-Delisle <http://seb.ly/>
  
  @class bkcore.controllers.TouchController
  @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
 */

(function() {
  var 
TouchControllerVec2exports_base;

  
TouchController = (function() {
    
TouchController.isCompatible = function() {
      return 
'ontouchstart' in document.documentElement;
    };


    
/*
      Creates a new TouchController
    
      @param dom DOMElement The element that will listen to touch events
      @param stickMargin int The left margin in px for stick detection
      @param buttonCallback function Callback for non-stick touches
     */

    
function TouchController(domstickMarginbuttonCallback) {
      
this.dom dom;
      
this.stickMargin stickMargin != null stickMargin 200;
      
this.buttonCallback buttonCallback != null buttonCallback null;
      
this.active true;
      
this.touches null;
      
this.stickID = -1;
      
this.stickPos = new Vec2(00);
      
this.stickStartPos = new Vec2(00);
      
this.stickVector = new Vec2(00);
      
this.dom.addEventListener('touchstart', ((function(_this) {
        return function(
e) {
          return 
_this.touchStart(e);
        };
      })(
this)), false);
      
this.dom.addEventListener('touchmove', ((function(_this) {
        return function(
e) {
          return 
_this.touchMove(e);
        };
      })(
this)), false);
      
this.dom.addEventListener('touchend', ((function(_this) {
        return function(
e) {
          return 
_this.touchEnd(e);
        };
      })(
this)), false);
    }


    
/*
      @private
     */

    
TouchController.prototype.touchStart = function(event) {
      var 
touch_i_len_ref;
      if (!
this.active) {
        return;
      }
      
_ref event.changedTouches;
      for (
_i 0_len _ref.length_i _len_i++) {
        
touch _ref[_i];
        if (
this.stickID && touch.clientX this.stickMargin) {
          
this.stickID touch.identifier;
          
this.stickStartPos.set(touch.clientXtouch.clientY);
          
this.stickPos.copy(this.stickStartPos);
          
this.stickVector.set(00);
          continue;
        } else {
          if (
typeof this.buttonCallback === "function") {
            
this.buttonCallback(truetouchevent);
          }
        }
      }
      
this.touches event.touches;
      return 
false;
    };


    
/*
      @private
     */

    
TouchController.prototype.touchMove = function(event) {
      var 
touch_i_len_ref;
      
event.preventDefault();
      if (!
this.active) {
        return;
      }
      
_ref event.changedTouches;
      for (
_i 0_len _ref.length_i _len_i++) {
        
touch _ref[_i];
        if (
this.stickID === touch.identifier && touch.clientX this.stickMargin) {
          
this.stickPos.set(touch.clientXtouch.clientY);
          
this.stickVector.copy(this.stickPos).substract(this.stickStartPos);
          break;
        }
      }
      
this.touches event.touches;
      return 
false;
    };


    
/*
      @private
     */

    
TouchController.prototype.touchEnd = function(event) {
      var 
touch_i_len_ref;
      if (!
this.active) {
        return;
      }
      
this.touches event.touches;
      
_ref event.changedTouches;
      for (
_i 0_len _ref.length_i _len_i++) {
        
touch _ref[_i];
        if (
this.stickID === touch.identifier) {
          
this.stickID = -1;
          
this.stickVector.set(00);
          break;
        } else {
          if (
typeof this.buttonCallback === "function") {
            
this.buttonCallback(falsetouchevent);
          }
        }
      }
      return 
false;
    };

    return 
TouchController;

  })();


  
/*
    Internal class used for vector2
    @class Vec2
    @private
   */

  
Vec2 = (function() {
    function 
Vec2(xy) {
      
this.!= null 0;
      
this.!= null 0;
    }

    
Vec2.prototype.substract = function(vec) {
      
this.-= vec.x;
      
this.-= vec.y;
      return 
this;
    };

    
Vec2.prototype.copy = function(vec) {
      
this.vec.x;
      
this.vec.y;
      return 
this;
    };

    
Vec2.prototype.set = function(xy) {
      
this.x;
      
this.y;
      return 
this;
    };

    return 
Vec2;

  })();


  
/*
    Exports
    @package bkcore
   */

  
exports exports != null exports this;

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

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

  
exports.bkcore.controllers.TouchController TouchController;

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