pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
99 lines (95 loc) • 2.85 kB
JavaScript
'use strict';
var _const = require('../ticker/const.js');
var Ticker = require('../ticker/Ticker.js');
"use strict";
class EventsTickerClass {
constructor() {
/** The frequency that fake events will be fired. */
this.interactionFrequency = 10;
this._deltaTime = 0;
this._didMove = false;
this._tickerAdded = false;
this._pauseUpdate = true;
}
/**
* Initializes the event ticker.
* @param events - The event system.
*/
init(events) {
this.removeTickerListener();
this.events = events;
this.interactionFrequency = 10;
this._deltaTime = 0;
this._didMove = false;
this._tickerAdded = false;
this._pauseUpdate = true;
}
/** Whether to pause the update checks or not. */
get pauseUpdate() {
return this._pauseUpdate;
}
set pauseUpdate(paused) {
this._pauseUpdate = paused;
}
/** Adds the ticker listener. */
addTickerListener() {
if (this._tickerAdded || !this.domElement) {
return;
}
Ticker.Ticker.system.add(this._tickerUpdate, this, _const.UPDATE_PRIORITY.INTERACTION);
this._tickerAdded = true;
}
/** Removes the ticker listener. */
removeTickerListener() {
if (!this._tickerAdded) {
return;
}
Ticker.Ticker.system.remove(this._tickerUpdate, this);
this._tickerAdded = false;
}
/** Sets flag to not fire extra events when the user has already moved there mouse */
pointerMoved() {
this._didMove = true;
}
/** Updates the state of interactive objects. */
_update() {
if (!this.domElement || this._pauseUpdate) {
return;
}
if (this._didMove) {
this._didMove = false;
return;
}
const rootPointerEvent = this.events["_rootPointerEvent"];
if (this.events.supportsTouchEvents && rootPointerEvent.pointerType === "touch") {
return;
}
globalThis.document.dispatchEvent(this.events.supportsPointerEvents ? new PointerEvent("pointermove", {
clientX: rootPointerEvent.clientX,
clientY: rootPointerEvent.clientY,
pointerType: rootPointerEvent.pointerType,
pointerId: rootPointerEvent.pointerId
}) : new MouseEvent("mousemove", {
clientX: rootPointerEvent.clientX,
clientY: rootPointerEvent.clientY
}));
}
/**
* Updates the state of interactive objects if at least {@link interactionFrequency}
* milliseconds have passed since the last invocation.
*
* Invoked by a throttled ticker update from {@link Ticker.system}.
* @param ticker - The throttled ticker.
*/
_tickerUpdate(ticker) {
this._deltaTime += ticker.deltaTime;
if (this._deltaTime < this.interactionFrequency) {
return;
}
this._deltaTime = 0;
this._update();
}
}
const EventsTicker = new EventsTickerClass();
exports.EventsTicker = EventsTicker;
//# sourceMappingURL=EventTicker.js.map