diff --git a/bkcore.coffee/controllers/TouchController.coffee b/bkcore.coffee/controllers/TouchController.coffee index b1dc5a1..24b749e 100644 --- a/bkcore.coffee/controllers/TouchController.coffee +++ b/bkcore.coffee/controllers/TouchController.coffee @@ -53,7 +53,7 @@ class TouchController event.preventDefault() return if not @active for touch in event.changedTouches - if @stickID is touch.identifier + if @stickID is touch.identifier and touch.clientX < @stickMargin @stickPos.set(touch.clientX, touch.clientY) @stickVector.copy(@stickPos).substract(@stickStartPos) break diff --git a/bkcore.coffee/controllers/TouchController.js b/bkcore.coffee/controllers/TouchController.js index 5283e69..d8e7f15 100644 --- a/bkcore.coffee/controllers/TouchController.js +++ b/bkcore.coffee/controllers/TouchController.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.7.1 /* TouchController (stick + buttons) for touch devices @@ -6,29 +6,26 @@ @class bkcore.controllers.TouchController @author Thibaut 'BKcore' Despoulain -*/ - + */ (function() { var TouchController, Vec2, exports, _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 - */ + /* + 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(dom, stickMargin, buttonCallback) { - var _this = this; this.dom = dom; this.stickMargin = stickMargin != null ? stickMargin : 200; this.buttonCallback = buttonCallback != null ? buttonCallback : null; @@ -38,21 +35,27 @@ this.stickPos = new Vec2(0, 0); this.stickStartPos = new Vec2(0, 0); this.stickVector = new Vec2(0, 0); - this.dom.addEventListener('touchstart', (function(e) { - return _this.touchStart(e); - }), false); - this.dom.addEventListener('touchmove', (function(e) { - return _this.touchMove(e); - }), false); - this.dom.addEventListener('touchend', (function(e) { - return _this.touchEnd(e); - }), false); + 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 - */ + /* + @private + */ TouchController.prototype.touchStart = function(event) { var touch, _i, _len, _ref; @@ -78,10 +81,10 @@ return false; }; - /* - @private - */ + /* + @private + */ TouchController.prototype.touchMove = function(event) { var touch, _i, _len, _ref; @@ -92,7 +95,7 @@ _ref = event.changedTouches; for (_i = 0, _len = _ref.length; _i < _len; _i++) { touch = _ref[_i]; - if (this.stickID === touch.identifier) { + if (this.stickID === touch.identifier && touch.clientX < this.stickMargin) { this.stickPos.set(touch.clientX, touch.clientY); this.stickVector.copy(this.stickPos).substract(this.stickStartPos); break; @@ -102,10 +105,10 @@ return false; }; - /* - @private - */ + /* + @private + */ TouchController.prototype.touchEnd = function(event) { var touch, _i, _len, _ref; @@ -133,15 +136,14 @@ })(); + /* Internal class used for vector2 @class Vec2 @private - */ - + */ Vec2 = (function() { - function Vec2(x, y) { this.x = x != null ? x : 0; this.y = y != null ? y : 0; @@ -169,11 +171,11 @@ })(); + /* Exports @package bkcore - */ - + */ exports = exports != null ? exports : this; diff --git a/bkcore/hexgl/ShipControls.js b/bkcore/hexgl/ShipControls.js index 81c31a6..b62e958 100644 --- a/bkcore/hexgl/ShipControls.js +++ b/bkcore/hexgl/ShipControls.js @@ -131,10 +131,13 @@ bkcore.hexgl.ShipControls = function(ctx) window.location.reload(false); else if(event.touches.length == 3) ctx.restart(); - else if(event.touches.length <= 1) - self.key.forward = false; - else - self.key.forward = true; + // touch was on the right-hand side of the screen + else if (touch.clientX > (ctx.width / 2)) { + if (event.type === 'touchend') + self.key.forward = false; + else + self.key.forward = true; + } }); } else if(ctx.controlType == 4 && bkcore.controllers.OrientationController.isCompatible())