/** * 鼠标和键盘控制的封装,主要用于Demo测试。 * 不可以打包导出,因为有移动端触控的第三方依赖 */ import type { Composition } from '@galacean/effects'; import type { CameraGestureHandler } from './protocol'; import 'hammerjs'; export declare enum MouseButtonType { left = 1, middle = 4, right = 2 } export declare enum InputActionType { none = 0, moveXYPlane = 1, moveZAxis = 2, rotateCamera = 3, rotatePoint = 4 } export interface InputControllerOptions { cameraID: string; sceneRadius: number; moveSpeed?: number; rotateSpeed?: number; comp: Composition; canvas: HTMLCanvasElement; } /** * 鼠标和键盘输入控制器 */ export declare class InputController { cameraID: string; sceneRadius: number; moveSpeed: number; rotateSpeed: number; comp?: Composition; canvas?: HTMLCanvasElement; gesture?: CameraGestureHandler; hammer?: HammerManager; keyDownListener?: (e: KeyboardEvent) => any; mouseUpListener?: (e: MouseEvent) => any; mouseDownListener?: (e: MouseEvent) => any; mouseMoveListener?: (e: MouseEvent) => any; mouseLeaveListener?: (e: MouseEvent) => any; mouseWheelListener?: (e: WheelEvent) => any; isMouseDown: boolean; isMoveBegin: boolean; currentAction: InputActionType; /** * 相机控制事件的回调,包括开始、持续和结束三种事件 */ private beginEventCallback?; private moveEventCallback?; private endEventCallback?; initial(options: InputControllerOptions): void; setBeginEventCallback(cb: (eventName: string) => any): void; setMoveEventCallback(cb: (eventName: string) => any): void; setEndEventCallback(cb: (eventName: string) => any): void; /** * 注册鼠标回调事件,只有在PC上才会注册,手机上不会注册 * * @param owner 输入控制器对象 */ private registerMouseEvent; private registerKeyboardEvent; /** * 注册触控回调事件,只在手机上才会注册,PC上不会注册 * * @param owner 输入控制器对象 */ private registerTouchEvent; /** * 相机开始事件的回调 * * @param eventName 事件名称 */ private launchBeginEventCallback; /** * 相机持续事件的回调 * * @param eventName 事件名称 */ private launchMoveEventCallback; /** * 相机结束事件的回调 * * @param eventName 事件名称 */ private launchEndEventCallback; dispose(): void; getMouseMoveSpeed(): number; getKeyMoveSpeed(): number; getRotateSpeed(): number; getWheelMoveSpeed(): number; }