interface RelativeCanvasCoords { x: number; y: number; } declare type EventHandlerCallback = (eventType: T, canvasCoords?: RelativeCanvasCoords, event?: MouseEvent | TouchEvent | KeyboardEvent) => void; interface CustomEventHandlers { mousedown?: EventHandlerCallback; mouseup?: EventHandlerCallback; mousemove?: EventHandlerCallback; touchstart?: EventHandlerCallback; touchmove?: EventHandlerCallback; touchend?: EventHandlerCallback; keydown?: EventHandlerCallback; keyup?: EventHandlerCallback; } export declare class CanvasEventHandler { private canvas; private context; private eventHandlers; private onInteraction; /** * 构造函数,初始化 Canvas 及其上下文,设置默认事件处理器 * @param {HTMLCanvasElement} canvas - 要处理事件的 Canvas 元素 * @param {CustomEventHandlers} [eventHandlers] - 自定义事件处理器对象(可选) */ constructor(canvas: HTMLCanvasElement, eventHandlers?: CustomEventHandlers); private defaultEventHandlers; /** * 添加事件监听器到 Canvas 元素 */ addEventListeners(): void; /** * 移除所有已添加的事件监听器 */ removeEventListeners(): void; /** * 获取相对于 Canvas 的坐标 * @param {Event} event - 浏览器事件对象 * @returns {RelativeCanvasCoords} - 包含 x 和 y 属性的对象,表示相对 Canvas 的坐标 */ getRelativeCanvasCoords(event: MouseEvent | TouchEvent): RelativeCanvasCoords; /** * 处理鼠标按下事件 * @param {MouseEvent} event - 鼠标按下事件对象 */ handleMouseDown(event: MouseEvent): void; /** * 处理鼠标抬起事件 * @param {MouseEvent} event - 鼠标抬起事件对象 */ handleMouseUp(event: MouseEvent): void; private isNearPoint; /** * 处理鼠标移动事件 * @param {MouseEvent} event - 鼠标移动事件对象 */ handleMouseMove(event: MouseEvent): void; /** * 处理触摸开始事件 * @param {TouchEvent} event - 触摸开始事件对象 */ handleTouchStart(event: TouchEvent): void; /** * 处理触摸移动事件 * @param {TouchEvent} event - 触摸移动事件对象 */ handleTouchMove(event: TouchEvent): void; /** * 处理触摸结束事件 * @param {TouchEvent} event - 触摸结束事件对象 */ handleTouchEnd(event: TouchEvent): void; /** * 处理键盘按下事件 * @param {KeyboardEvent} event - 键盘按下事件对象 */ handleKeyDown(event: KeyboardEvent): void; /** * 处理键盘抬起事件 * @param {KeyboardEvent} event - 键盘抬起事件对象 */ handleKeyUp(event: KeyboardEvent): void; /** * 基于回调函数处理交互事件 * @param {string} eventType - 事件类型(如 'mousedown', 'mousemove' 等) * @param {RelativeCanvasCoords} [canvasCoords] - 相对于 Canvas 的坐标(仅适用于鼠标和触摸事件) * @param {Event} [event] - 原始浏览器事件对象 */ handleInteraction(eventType: string, canvasCoords?: RelativeCanvasCoords | null, event?: Event): void; } export {};