223 lines
7.3 KiB
JavaScript
223 lines
7.3 KiB
JavaScript
'use strict';
|
|
|
|
exports.__esModule = true;
|
|
|
|
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
|
|
var _core = require('../core');
|
|
|
|
var core = _interopRequireWildcard(_core);
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
/**
|
|
* Holds all information related to an Interaction event
|
|
*
|
|
* @class
|
|
* @memberof PIXI.interaction
|
|
*/
|
|
var InteractionData = function () {
|
|
/**
|
|
*
|
|
*/
|
|
function InteractionData() {
|
|
_classCallCheck(this, InteractionData);
|
|
|
|
/**
|
|
* This point stores the global coords of where the touch/mouse event happened
|
|
*
|
|
* @member {PIXI.Point}
|
|
*/
|
|
this.global = new core.Point();
|
|
|
|
/**
|
|
* The target DisplayObject that was interacted with
|
|
*
|
|
* @member {PIXI.DisplayObject}
|
|
*/
|
|
this.target = null;
|
|
|
|
/**
|
|
* When passed to an event handler, this will be the original DOM Event that was captured
|
|
*
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent
|
|
* @member {MouseEvent|TouchEvent|PointerEvent}
|
|
*/
|
|
this.originalEvent = null;
|
|
|
|
/**
|
|
* Unique identifier for this interaction
|
|
*
|
|
* @member {number}
|
|
*/
|
|
this.identifier = null;
|
|
|
|
/**
|
|
* Indicates whether or not the pointer device that created the event is the primary pointer.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary
|
|
* @type {Boolean}
|
|
*/
|
|
this.isPrimary = false;
|
|
|
|
/**
|
|
* Indicates which button was pressed on the mouse or pointer device to trigger the event.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button
|
|
* @type {number}
|
|
*/
|
|
this.button = 0;
|
|
|
|
/**
|
|
* Indicates which buttons are pressed on the mouse or pointer device when the event is triggered.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
|
|
* @type {number}
|
|
*/
|
|
this.buttons = 0;
|
|
|
|
/**
|
|
* The width of the pointer's contact along the x-axis, measured in CSS pixels.
|
|
* radiusX of TouchEvents will be represented by this value.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width
|
|
* @type {number}
|
|
*/
|
|
this.width = 0;
|
|
|
|
/**
|
|
* The height of the pointer's contact along the y-axis, measured in CSS pixels.
|
|
* radiusY of TouchEvents will be represented by this value.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height
|
|
* @type {number}
|
|
*/
|
|
this.height = 0;
|
|
|
|
/**
|
|
* The angle, in degrees, between the pointer device and the screen.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltX
|
|
* @type {number}
|
|
*/
|
|
this.tiltX = 0;
|
|
|
|
/**
|
|
* The angle, in degrees, between the pointer device and the screen.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltY
|
|
* @type {number}
|
|
*/
|
|
this.tiltY = 0;
|
|
|
|
/**
|
|
* The type of pointer that triggered the event.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType
|
|
* @type {string}
|
|
*/
|
|
this.pointerType = null;
|
|
|
|
/**
|
|
* Pressure applied by the pointing device during the event. A Touch's force property
|
|
* will be represented by this value.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure
|
|
* @type {number}
|
|
*/
|
|
this.pressure = 0;
|
|
|
|
/**
|
|
* From TouchEvents (not PointerEvents triggered by touches), the rotationAngle of the Touch.
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Touch/rotationAngle
|
|
* @type {number}
|
|
*/
|
|
this.rotationAngle = 0;
|
|
|
|
/**
|
|
* Twist of a stylus pointer.
|
|
* @see https://w3c.github.io/pointerevents/#pointerevent-interface
|
|
* @type {number}
|
|
*/
|
|
this.twist = 0;
|
|
|
|
/**
|
|
* Barrel pressure on a stylus pointer.
|
|
* @see https://w3c.github.io/pointerevents/#pointerevent-interface
|
|
* @type {number}
|
|
*/
|
|
this.tangentialPressure = 0;
|
|
}
|
|
|
|
/**
|
|
* The unique identifier of the pointer. It will be the same as `identifier`.
|
|
* @readonly
|
|
* @member {number}
|
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId
|
|
*/
|
|
|
|
|
|
/**
|
|
* This will return the local coordinates of the specified displayObject for this InteractionData
|
|
*
|
|
* @param {PIXI.DisplayObject} displayObject - The DisplayObject that you would like the local
|
|
* coords off
|
|
* @param {PIXI.Point} [point] - A Point object in which to store the value, optional (otherwise
|
|
* will create a new point)
|
|
* @param {PIXI.Point} [globalPos] - A Point object containing your custom global coords, optional
|
|
* (otherwise will use the current global coords)
|
|
* @return {PIXI.Point} A point containing the coordinates of the InteractionData position relative
|
|
* to the DisplayObject
|
|
*/
|
|
InteractionData.prototype.getLocalPosition = function getLocalPosition(displayObject, point, globalPos) {
|
|
return displayObject.worldTransform.applyInverse(globalPos || this.global, point);
|
|
};
|
|
|
|
/**
|
|
* Copies properties from normalized event data.
|
|
*
|
|
* @param {Touch|MouseEvent|PointerEvent} event The normalized event data
|
|
* @private
|
|
*/
|
|
|
|
|
|
InteractionData.prototype._copyEvent = function _copyEvent(event) {
|
|
// isPrimary should only change on touchstart/pointerdown, so we don't want to overwrite
|
|
// it with "false" on later events when our shim for it on touch events might not be
|
|
// accurate
|
|
if (event.isPrimary) {
|
|
this.isPrimary = true;
|
|
}
|
|
this.button = event.button;
|
|
this.buttons = event.buttons;
|
|
this.width = event.width;
|
|
this.height = event.height;
|
|
this.tiltX = event.tiltX;
|
|
this.tiltY = event.tiltY;
|
|
this.pointerType = event.pointerType;
|
|
this.pressure = event.pressure;
|
|
this.rotationAngle = event.rotationAngle;
|
|
this.twist = event.twist || 0;
|
|
this.tangentialPressure = event.tangentialPressure || 0;
|
|
};
|
|
|
|
/**
|
|
* Resets the data for pooling.
|
|
*
|
|
* @private
|
|
*/
|
|
|
|
|
|
InteractionData.prototype._reset = function _reset() {
|
|
// isPrimary is the only property that we really need to reset - everything else is
|
|
// guaranteed to be overwritten
|
|
this.isPrimary = false;
|
|
};
|
|
|
|
_createClass(InteractionData, [{
|
|
key: 'pointerId',
|
|
get: function get() {
|
|
return this.identifier;
|
|
}
|
|
}]);
|
|
|
|
return InteractionData;
|
|
}();
|
|
|
|
exports.default = InteractionData;
|
|
//# sourceMappingURL=InteractionData.js.map
|