@phaserjs/phaser
Version:
93 lines (92 loc) • 3.87 kB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => {
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
return value;
};
import { Emit } from "../../events/Emit";
import { EventEmitter } from "../../events/EventEmitter";
import { RendererInstance } from "../../renderer/RendererInstance";
import { Vec2 } from "../../math/vec2/Vec2";
export class Mouse extends EventEmitter {
constructor(target) {
super();
__publicField(this, "primaryDown", false);
__publicField(this, "auxDown", false);
__publicField(this, "secondaryDown", false);
__publicField(this, "blockContextMenu", true);
__publicField(this, "localPoint");
__publicField(this, "hitPoint");
__publicField(this, "target");
__publicField(this, "resolution", 1);
__publicField(this, "mousedownHandler");
__publicField(this, "mouseupHandler");
__publicField(this, "mousemoveHandler");
__publicField(this, "mousewheelHandler");
__publicField(this, "contextmenuHandler");
__publicField(this, "blurHandler");
__publicField(this, "transPoint");
this.mousedownHandler = (event) => this.onMouseDown(event);
this.mouseupHandler = (event) => this.onMouseUp(event);
this.mousemoveHandler = (event) => this.onMouseMove(event);
this.mousewheelHandler = (event) => this.onMouseWheel(event);
this.contextmenuHandler = (event) => this.onContextMenuEvent(event);
this.blurHandler = () => this.onBlur();
this.localPoint = new Vec2();
this.hitPoint = new Vec2();
this.transPoint = new Vec2();
if (!target) {
target = RendererInstance.get().canvas;
}
target.addEventListener("mousedown", this.mousedownHandler);
target.addEventListener("mouseup", this.mouseupHandler);
target.addEventListener("wheel", this.mousewheelHandler, { passive: false });
target.addEventListener("contextmenu", this.contextmenuHandler);
window.addEventListener("mouseup", this.mouseupHandler);
window.addEventListener("mousemove", this.mousemoveHandler);
window.addEventListener("blur", this.blurHandler);
this.target = target;
}
onBlur() {
}
onMouseDown(event) {
this.positionToPoint(event);
this.primaryDown = event.button === 0;
this.auxDown = event.button === 1;
this.secondaryDown = event.button === 2;
Emit(this, "pointerdown", this.localPoint.x, this.localPoint.y, event.button, event);
}
onMouseUp(event) {
this.positionToPoint(event);
this.primaryDown = !(event.button === 0);
this.auxDown = !(event.button === 1);
this.secondaryDown = !(event.button === 2);
Emit(this, "pointerup", this.localPoint.x, this.localPoint.y, event.button, event);
}
onMouseMove(event) {
this.positionToPoint(event);
Emit(this, "pointermove", this.localPoint.x, this.localPoint.y, event);
}
onMouseWheel(event) {
Emit(this, "wheel", event.deltaX, event.deltaY, event.deltaZ, event);
}
onContextMenuEvent(event) {
if (this.blockContextMenu) {
event.preventDefault();
}
Emit(this, "contextmenu", event);
}
positionToPoint(event) {
return this.localPoint.set(event.offsetX, event.offsetY);
}
shutdown() {
const target = this.target;
target.removeEventListener("mousedown", this.mousedownHandler);
target.removeEventListener("mouseup", this.mouseupHandler);
target.removeEventListener("wheel", this.mousewheelHandler);
target.removeEventListener("contextmenu", this.contextmenuHandler);
window.removeEventListener("mouseup", this.mouseupHandler);
window.removeEventListener("mousemove", this.mousemoveHandler);
window.removeEventListener("blur", this.blurHandler);
}
}