UNPKG

@turbox3d/design-engine

Version:

Large-scale design application engine library

73 lines (72 loc) 2.23 kB
import { Extra, GesturesExtra, InteractiveEvent } from '@turbox3d/event-manager'; export declare enum DragStatus { Ready = "ready", Dragging = "dragging", End = "end" } /** * 当次鼠标事件(down -> move -> up)的处理类型 */ export declare enum MouseDealType { /** * 作为一次 Drag 事件处理 */ Drag = "drag", /** * 作为一次 Click 事件处理 */ Click = "click", /** 多点触控事件 */ MultiTouch = "multi-touch", /** 按压 */ Press = "press" } export default class MaterialDragSystem { /** 入参 */ args: any[]; /** 事件回调处理 */ handler: (e: InteractiveEvent, event: PointerEvent | WheelEvent | React.PointerEvent | Touch, extra?: GesturesExtra | Extra) => void; maxFPS: number; static touchableDevice: boolean; /** 渲染器的 canvas 元素 */ private canvas; /** 当前鼠标是否处于按下状态 */ private isMouseDown; private mouseDownInfo?; /** 当前的拖拽状态 */ private dragStatus?; /** 当次鼠标事件处理类型 */ private mouseDealType?; /** 坐标轴类型 */ private coordinateType?; /** 缓存事件池,用于多点触控 */ private eventCache; /** 双指间距 */ private prevDiff; /** 初始的间距 */ private startDiff; /** 双指方向 */ private prevVector; /** 初始的方向 */ private startVector; private pressTimer; /** 使用 x 还是 y 轴间距作为缩放系数计算因子 */ private useX?; constructor(handler: (e: InteractiveEvent, event: PointerEvent | WheelEvent | React.PointerEvent | Touch, extra?: GesturesExtra | Extra) => void, maxFPS?: number); private isMouseMoved; dispose(): void; registerListener(): void; private triggerEvent; private addEventCache; private removeEventCache; private updateEventCache; private downHandler; onMouseDown: (...args: any[]) => (event: PointerEvent) => void; onTouchDown: (...args: any[]) => (event: TouchEvent) => void; private moveHandler; private onMouseMove; private onTouchMove; private upHandler; private onMouseUp; private onTouchUp; }