EventManager
事件管理器类,继承自Three.js的EventDispatcher,提供统一的事件监听和管理功能。支持为多个对象添加、移除事件监听器,并提供批量清理功能。
类定义
javascript
class EventManager extends EventDispatcher属性
eventMap
事件映射表,返回内部存储的事件映射Map对象,包含所有对象与其事件监听器的映射关系。
类型: {Map<Object, Map<string, Array<Function>>>}
只读: true
方法
addEvent(object, eventType, event)
为对象添加事件监听器,将事件监听器添加到指定对象的事件映射中。
参数:
object{Object} - 要添加事件监听器的对象eventType{string} - 事件类型event{Function} - 事件监听器函数
示例:
javascript
// 为按钮添加点击事件监听
eventManager.addEvent(button, 'click', handleClick);
// 为窗口添加resize事件监听
eventManager.addEvent(window, 'resize', handleResize);removeEvent(object, eventType, event)
移除对象的事件监听器,从指定对象的事件映射中移除特定的事件监听器。
参数:
object{Object} - 要移除事件监听器的对象eventType{string} - 事件类型event{Function} - 要移除的事件监听器函数
示例:
javascript
// 移除按钮的点击事件监听
eventManager.removeEvent(button, 'click', handleClick);
// 移除窗口的resize事件监听
eventManager.removeEvent(window, 'resize', handleResize);removeAllEvent()
移除所有事件监听器,批量移除所有已注册的事件监听器,并清空内部的事件映射表。
示例:
javascript
// 清理所有事件监听器
eventManager.removeAllEvent();dispose()
释放事件管理器资源,清理所有事件监听器和映射关系。
示例:
javascript
// 清理所有事件
eventManager.dispose();继承的方法
EventManager继承自Three.js的EventDispatcher,重写了以下方法:
addEventListener(type, listener)
添加事件监听器(继承自EventDispatcher)。
参数:
type{string} - 事件类型listener{Function} - 事件监听器函数
示例:
javascript
// 添加事件监听器
eventManager.addEventListener('customEvent', handleCustomEvent);removeEventListener(type, listener)
移除事件监听器(继承自EventDispatcher)。
参数:
type{string} - 事件类型listener{Function} - 要移除的事件监听器函数
示例:
javascript
// 移除事件监听器
eventManager.removeEventListener('customEvent', handleCustomEvent);使用场景
事件管理
- 统一管理多个对象的事件监听器
- 提供便捷的事件添加和移除方法
- 支持批量事件清理
资源清理
- 防止内存泄漏
- 提供完整的事件清理功能
- 支持对象的生命周期管理
事件分发
- 支持自定义事件的创建和分发
- 提供事件监听器的检查功能
- 继承Three.js的事件系统
批量操作
- 支持批量移除所有事件监听器
- 提供统一的事件管理接口
- 支持事件映射表的访问
相关链接
- Viewer3D - 主引擎类
- SceneManager - 场景管理器
- Selection - 选择系统