@turbox3d/design-engine
Version:
Large-scale design application engine library
73 lines (72 loc) • 2.23 kB
TypeScript
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;
}