import * as spec from '@galacean/effects-specification'; import type { BoundingBoxTriangle, HitTestTriangleParams } from './click-handler'; import type { EventSystem, TouchEventType } from './event-system'; import { InteractMesh } from './interact-mesh'; import { RendererComponent } from '../../components'; import type { DragEventType } from './interact-vfx-item'; import type { Renderer } from '../../render'; /** * 交互组件 * @since 2.0.0 */ export declare class InteractComponent extends RendererComponent { clickable: boolean; dragEvent: DragEventType | null; bouncingArg: TouchEventType | null; previewContent: InteractMesh | null; interactData: spec.InteractContent; /** * 拖拽后的惯性衰减系数,范围[0, 1], 越大惯性越强 * @default 0.95 */ downgrade: number; /** * 拖拽后的惯性速度,范围[0, +∞), 越大惯性越强 * @default 25 * @since 2.6.0 */ speed: number; /** * 拖拽时的距离映射系数,越大越容易拖动 * @default [1, 1] */ dragRatio: number[]; /** * 拖拽范围(编辑器制作时已经设置好,特殊情况可运行时修改) */ dragRange: { dxRange: [min: number, max: number]; dyRange: [min: number, max: number]; }; /** * 滑动失效区域,范围[0, 1],单位 %,避免滑动触控冲突(如 iOS 右滑退出时不执行) * > 若是数组形式,格式为:[top、right、bottom、left] * @since 2.6.0 * @default 0 */ invalidBorderRange: number | number[]; private invalidByBorderRange; private duringPlay; /** 是否响应点击和拖拽交互事件 */ private _interactive; private lastTime; /** * 是否响应点击和拖拽交互事件 */ set interactive(enable: boolean); get interactive(): boolean; /** * 获取拖拽范围 X 轴 * @returns 拖拽范围 [min, max] */ getDragRangeX(): [min: number, max: number]; /** * 设置拖拽范围 X 轴 * @param min 最小值 * @param max 最大值 */ setDragRangeX(min: number, max: number): void; /** * 获取拖拽范围 Y 轴 * @returns 拖拽范围 [min, max] */ getDragRangeY(): [min: number, max: number]; /** * 设置拖拽范围 Y 轴 * @param min 最小值 * @param max 最大值 */ setDragRangeY(min: number, max: number): void; onStart(): void; onDisable(): void; onEnable(): void; onUpdate(dt: number): void; render(renderer: Renderer): void; onDestroy(): void; endDragTarget(): void; handleDragMove(evt: Partial, event: TouchEventType): void; beginDragTarget(options: spec.DragInteractOption, eventSystem: EventSystem): void; getHitTestParams: (force?: boolean) => HitTestTriangleParams | void; getBoundingBox(): BoundingBoxTriangle | void; fromData(data: spec.InteractContent): void; /** * 是否可以交互 * @returns */ canInteract(): boolean; /** * 检查滑动手势边界 * @param position */ private checkInvalidBorderRange; }