UNPKG

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
'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