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

271 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`
```ts
if (newValue) {
// 透视选择激活时,将对象添加到过滤列表(不可被选中)
viewer.events.addToFilterList(sampleObject)
} else {
// 透视选择关闭时,从过滤列表中移除(可被选中)
viewer.events.removeFromFilterList(sampleObject)
}
}
}, {immediate: true})
```
### `EventManager.removeFromFilterList`
- 来源:`packages/demo/src/components/Toolbar.vue`
```ts
viewer.events.addToFilterList(sampleObject)
} else {
// 透视选择关闭时,从过滤列表中移除(可被选中)
viewer.events.removeFromFilterList(sampleObject)
}
}
}, {immediate: true})
```
### `EventManager.enableBoxSelection`
- 来源:`packages/demo/src/components/Toolbar.vue`
```ts
if (eventManager.enableBoxSelection && eventManager.disableBoxSelection) {
// 启用框选
eventManager.enableBoxSelection()
// 添加事件监听器
eventManager.on(EventManagerEvents.BOX_SELECTION_MOVE, handleBoxSelectionMove)
eventManager.on(EventManagerEvents.BOX_SELECTION_COMPLETE, handleBoxSelectionComplete)
```