starling-framework
Version:
A fast, productive library for 2D cross-platform development.
260 lines (245 loc) • 9.27 kB
JavaScript
// Class: starling.events.Touch
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
function starling_utils_StringUtil() {return require("./../../starling/utils/StringUtil");}
function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");}
function openfl_VectorData() {return $import(require("openfl/Vector"));}
function openfl_geom_Point() {return $import(require("openfl/geom/Point"));}
function starling_utils_Pool() {return require("./../../starling/utils/Pool");}
// Constructor
var Touch = function(id) {
this.__id = id;
this.__tapCount = 0;
this.__phase = "hover";
this.__pressure = this.__width = this.__height = 1.0;
this.__bubbleChain = (openfl__$Vector_Vector_$Impl_$().default)._new();
this.__timestamp = this.__startTimestamp = -1;
}
// Meta
Touch.__name__ = "starling.events.Touch";
Touch.__isInterface__ = false;
Touch.prototype = {
getLocation: function(space,out) {
Touch.sHelperPoint.setTo(this.__globalX,this.__globalY);
return space.globalToLocal(Touch.sHelperPoint,out);
},
getPreviousLocation: function(space,out) {
Touch.sHelperPoint.setTo(this.__previousGlobalX,this.__previousGlobalY);
return space.globalToLocal(Touch.sHelperPoint,out);
},
getStartLocation: function(space,out) {
Touch.sHelperPoint.setTo(this.__startGlobalX,this.__startGlobalY);
return space.globalToLocal(Touch.sHelperPoint,out);
},
getMovement: function(space,out) {
return Touch.getMovementBetween(this.__previousGlobalX,this.__previousGlobalY,this.__globalX,this.__globalY,space,out);
},
getMovementSinceStart: function(space,out) {
return Touch.getMovementBetween(this.__startGlobalX,this.__startGlobalY,this.__globalX,this.__globalY,space,out);
},
isTouching: function(target) {
var this1 = this.__bubbleChain;
return (Array.prototype.indexOf.call)(this1,target,0) != -1;
},
toString: function() {
return (starling_utils_StringUtil().default).format("[Touch {0}: globalX={1}, globalY={2}, phase={3}]",[this.__id,this.__globalX,this.__globalY,this.__phase]);
},
clone: function() {
var clone = new Touch(this.__id);
clone.__globalX = this.__globalX;
clone.__globalY = this.__globalY;
clone.__previousGlobalX = this.__previousGlobalX;
clone.__previousGlobalY = this.__previousGlobalY;
clone.__startGlobalX = this.__startGlobalX;
clone.__startGlobalY = this.__startGlobalY;
clone.__startTimestamp = this.__startTimestamp;
clone.__phase = this.__phase;
clone.__tapCount = this.__tapCount;
clone.__timestamp = this.__timestamp;
clone.__pressure = this.__pressure;
clone.__width = this.__width;
clone.__height = this.__height;
clone.__cancelled = this.__cancelled;
clone.set_target(this.__target);
return clone;
},
updateBubbleChain: function() {
if(this.__target != null) {
var length = 1;
var element = this.__target;
this.__bubbleChain.length = 1;
(openfl__$Vector_Vector_$Impl_$().default).set(this.__bubbleChain,0,element);
while(true) {
element = element.get_parent();
if(!(element != null)) {
break;
}
(openfl__$Vector_Vector_$Impl_$().default).set(this.__bubbleChain,length++,element);
}
} else {
this.__bubbleChain.length = 0;
}
},
get_id: function() {
return this.__id;
},
get_previousGlobalX: function() {
return this.__previousGlobalX;
},
get_previousGlobalY: function() {
return this.__previousGlobalY;
},
get_startGlobalX: function() {
return this.__startGlobalX;
},
get_startGlobalY: function() {
return this.__startGlobalY;
},
get_globalX: function() {
return this.__globalX;
},
set_globalX: function(value) {
if(this.__globalX != this.__globalX) {
this.__previousGlobalX = this.__startGlobalX = value;
} else {
this.__previousGlobalX = this.__globalX;
}
return this.__globalX = value;
},
get_globalY: function() {
return this.__globalY;
},
set_globalY: function(value) {
if(this.__globalY != this.__globalY) {
this.__previousGlobalY = this.__startGlobalY = value;
} else {
this.__previousGlobalY = this.__globalY;
}
return this.__globalY = value;
},
get_tapCount: function() {
return this.__tapCount;
},
set_tapCount: function(value) {
return this.__tapCount = value;
},
get_phase: function() {
return this.__phase;
},
set_phase: function(value) {
this.__phase = value;
if(value == "began") {
this.__startGlobalX = this.__globalX;
this.__startGlobalY = this.__globalY;
this.__startTimestamp = this.__timestamp;
}
return value;
},
get_target: function() {
return this.__target;
},
set_target: function(value) {
if(this.__target != value) {
this.__target = value;
this.updateBubbleChain();
}
return this.__target;
},
get_timestamp: function() {
return this.__timestamp;
},
set_timestamp: function(value) {
if(this.__startTimestamp < 0) {
this.__startTimestamp = value;
}
return this.__timestamp = value;
},
get_pressure: function() {
return this.__pressure;
},
set_pressure: function(value) {
return this.__pressure = value;
},
get_width: function() {
return this.__width;
},
set_width: function(value) {
return this.__width = value;
},
get_height: function() {
return this.__height;
},
set_height: function(value) {
return this.__height = value;
},
get_cancelled: function() {
return this.__cancelled;
},
set_cancelled: function(value) {
return this.__cancelled = value;
},
get_duration: function() {
if(this.__timestamp < 0 || this.__startTimestamp < 0 || this.__startTimestamp > this.__timestamp) {
return -1.0;
} else {
return this.__timestamp - this.__startTimestamp;
}
},
update: function(timestamp,phase,globalX,globalY,pressure,width,height) {
if(height == null) {
height = 1.0;
}
if(width == null) {
width = 1.0;
}
if(pressure == null) {
pressure = 1.0;
}
this.__pressure = pressure;
this.__width = width;
this.__height = height;
this.set_timestamp(timestamp);
this.set_globalX(globalX);
this.set_globalY(globalY);
this.set_phase(phase);
},
dispatchEvent: function(event) {
if(this.__target != null) {
event.dispatch(this.__bubbleChain);
}
},
get_bubbleChain: function() {
var this1 = this.__bubbleChain;
var a = null;
if(a == null) {
return (openfl_VectorData().default).ofArray((Array.prototype.concat.call)(this1));
} else {
return (openfl_VectorData().default).ofArray((Array.prototype.concat.call)(this1,a));
}
}
};
Touch.prototype.__class__ = Touch.prototype.constructor = $hxClasses["starling.events.Touch"] = Touch;
// Init
Object.defineProperties(Touch.prototype,{ id : { get : function () { return this.get_id (); }}, previousGlobalX : { get : function () { return this.get_previousGlobalX (); }}, previousGlobalY : { get : function () { return this.get_previousGlobalY (); }}, startGlobalX : { get : function () { return this.get_startGlobalX (); }}, startGlobalY : { get : function () { return this.get_startGlobalY (); }}, globalX : { get : function () { return this.get_globalX (); }, set : function (v) { return this.set_globalX (v); }}, globalY : { get : function () { return this.get_globalY (); }, set : function (v) { return this.set_globalY (v); }}, tapCount : { get : function () { return this.get_tapCount (); }, set : function (v) { return this.set_tapCount (v); }}, phase : { get : function () { return this.get_phase (); }, set : function (v) { return this.set_phase (v); }}, target : { get : function () { return this.get_target (); }, set : function (v) { return this.set_target (v); }}, timestamp : { get : function () { return this.get_timestamp (); }, set : function (v) { return this.set_timestamp (v); }}, pressure : { get : function () { return this.get_pressure (); }, set : function (v) { return this.set_pressure (v); }}, width : { get : function () { return this.get_width (); }, set : function (v) { return this.set_width (v); }}, height : { get : function () { return this.get_height (); }, set : function (v) { return this.set_height (v); }}, cancelled : { get : function () { return this.get_cancelled (); }, set : function (v) { return this.set_cancelled (v); }}, duration : { get : function () { return this.get_duration (); }}, bubbleChain : { get : function () { return this.get_bubbleChain (); }}});
// Statics
Touch.getMovementBetween = function(startX,startY,endX,endY,space,out) {
if(out == null) {
out = new (openfl_geom_Point().default)();
}
var startPos = (starling_utils_Pool().default).getPoint(startX,startY);
var endPos = (starling_utils_Pool().default).getPoint(endX,endY);
space.globalToLocal(startPos,startPos);
space.globalToLocal(endPos,endPos);
out.setTo(endPos.x - startPos.x,endPos.y - startPos.y);
(starling_utils_Pool().default).putPoint(startPos);
(starling_utils_Pool().default).putPoint(endPos);
return out;
}
Touch.sHelperPoint = new (openfl_geom_Point().default)()
// Export
exports.default = Touch;