6.5 KiB
6.5 KiB
| outline | ||
|---|---|---|
|
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)