deep-engine-demo/packages/docs/api/manager/EventManager.md
2026-04-19 18:46:28 +08:00

6.5 KiB
Raw Blame History

outline
2
3

EventManager

  • 源文件:packages/sdk/src/manager/EventManager.ts
  • 文档位置:packages/docs/api/manager/EventManager.md

类:EventManager

  • 作用:事件管理器 继承自 Emittery提供事件的订阅、取消订阅和触发功能
  • 继承/实现:extends Emittery<EventManagerEventMap>

构造函数

new EventManager(viewer: Viewer)

  • 作用:创建 EventManager 实例。

  • 入参:

参数名 类型 必填 说明
viewer Viewer 关联的 Viewer 实例。
  • 出参:EventManager
  • 返回说明:返回当前类实例。

属性

属性名 可见性 类型 作用
raycaster public Raycaster 射线选择相关
mouse public Vector2 用于保存 mouse 对应的数据。
camera public Camera | null 用于保存 camera 对应的数据。
scene public Scene | null 用于保存 scene 对应的数据。
filterList public Object3D[] 用于保存 filterList 的集合数据。
onDownPosition public Vector2 鼠标位置跟踪
onUpPosition public Vector2 用于保存 onUpPosition 对应的数据。
selectionBox public SelectionBox | null 框选相关
selectionHelper public SelectionHelper | null 用于保存 selectionHelper 对应的数据。
boxSelectionEnabled public boolean 用于标记 boxSelectionEnabled 的启用状态。
viewer public Viewer 用于保存 viewer 对应的数据。

访问器

get enableClick(): boolean

  • 作用:获取 enable Click。

  • 入参:无

  • 出参:boolean

  • 返回说明:返回布尔结果。

set enableClick(value: boolean)

  • 作用:设置 enable Click。

  • 入参:

参数名 类型 必填 说明
value boolean 要写入的新值。
  • 出参:void
  • 返回说明:无返回值。

方法

disableRaycast(): void

  • 作用:禁用射线选择功能

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

addToFilterList(object: Object3D): void

  • 作用:添加对象到过滤列表(这些对象不会被射线选中)

  • 入参:

参数名 类型 必填 说明
object Object3D - 要过滤的对象
  • 出参:void
  • 返回说明:无返回值。

removeFromFilterList(object: Object3D): void

  • 作用:从过滤列表中移除对象

  • 入参:

参数名 类型 必填 说明
object Object3D - 要移除的对象
  • 出参:void
  • 返回说明:无返回值。

clearFilterList(): void

  • 作用:清空过滤列表

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

getMousePosition(dom: HTMLElement, x: number, y: number): [number, number]

  • 作用:获取鼠标在视口中的位置

  • 入参:

参数名 类型 必填 说明
dom HTMLElement 参数 dom,类型为 HTMLElement
x number 参数 x,类型为 number
y number 参数 y,类型为 number
  • 出参:[number, number]
  • 返回说明:返回 [number, number]

handleClick(): void

  • 作用:处理点击事件

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

onMouseDown(event: MouseEvent): void

  • 作用:鼠标按下事件处理

  • 入参:

参数名 类型 必填 说明
event MouseEvent 参数 event,类型为 MouseEvent
  • 出参:void
  • 返回说明:无返回值。

onMouseUp(event: MouseEvent): void

  • 作用:鼠标释放事件处理

  • 入参:

参数名 类型 必填 说明
event MouseEvent 参数 event,类型为 MouseEvent
  • 出参:void
  • 返回说明:无返回值。

enableBoxSelection(): void

  • 作用:启用框选功能

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

disableBoxSelection(): void

  • 作用:禁用框选功能

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

onBoxSelectionStart(event: PointerEvent): void

  • 作用:框选开始事件处理

  • 入参:

参数名 类型 必填 说明
event PointerEvent 参数 event,类型为 PointerEvent
  • 出参:void
  • 返回说明:无返回值。

onBoxSelectionMove(event: PointerEvent): void

  • 作用:框选移动事件处理

  • 入参:

参数名 类型 必填 说明
event PointerEvent 参数 event,类型为 PointerEvent
  • 出参:void
  • 返回说明:无返回值。

onBoxSelectionEnd(event: PointerEvent): void

  • 作用:框选结束事件处理

  • 入参:

参数名 类型 必填 说明
event PointerEvent 参数 event,类型为 PointerEvent
  • 出参:void
  • 返回说明:无返回值。

构造示例

  • 当前 Demo 中没有直接展示 EventManager 的构造调用。

函数示例

EventManager.addToFilterList

  • 来源:packages/demo/src/components/Toolbar.vue
    if (newValue) {
      // 透视选择激活时,将对象添加到过滤列表(不可被选中)
      viewer.events.addToFilterList(sampleObject)
    } else {
      // 透视选择关闭时,从过滤列表中移除(可被选中)
      viewer.events.removeFromFilterList(sampleObject)
    }
  }
}, {immediate: true})

EventManager.removeFromFilterList

  • 来源:packages/demo/src/components/Toolbar.vue
      viewer.events.addToFilterList(sampleObject)
    } else {
      // 透视选择关闭时,从过滤列表中移除(可被选中)
      viewer.events.removeFromFilterList(sampleObject)
    }
  }
}, {immediate: true})

EventManager.enableBoxSelection

  • 来源:packages/demo/src/components/Toolbar.vue
    if (eventManager.enableBoxSelection && eventManager.disableBoxSelection) {
      // 启用框选
      eventManager.enableBoxSelection()
      // 添加事件监听器
      eventManager.on(EventManagerEvents.BOX_SELECTION_MOVE, handleBoxSelectionMove)
      eventManager.on(EventManagerEvents.BOX_SELECTION_COMPLETE, handleBoxSelectionComplete)