UNPKG

toosoon-events

Version:

Project providing services implemented as singleton class instances

32 lines (31 loc) 803 B
import { EventManager } from './index'; /** * Utility class for creating `requestAnimationFrame` listeners * * @class RafManager * @extends EventManager */ class RafManager extends EventManager { listeners = []; time = 0; _rafId; bind() { this.time = Date.now(); this._rafId = requestAnimationFrame(this._onUpdate); } unbind() { cancelAnimationFrame(this._rafId); this._rafId = 0; } update = () => { const time = Date.now(); const delta = (time - this.time) / 1000; this.time = time; this.listeners.forEach((listener) => listener(time, delta)); }; _onUpdate = () => { this.update(); this._rafId = requestAnimationFrame(this._onUpdate); }; } export default new RafManager();