# 监听事件

在本教程中,你可以通过BIMFACE提供的Event相关类对指定的事件进行监听。

# 教程

事件监听机制是指当指定的某一事件发生时,通知对应的事件监听器,触发执行相应的代码。在系统开发中,离不开各种事件的应用。基于不同的应用开发场景,对不同的事件进行监听,可以在事件的回调函数中处理相应的业务逻辑。

# 事件相关类

为了满足更多开发需求,我们提供了多套监听事件类。

# 绑定监听事件

了解事件相关类后,你就可以基于实际需要绑定不同的监听事件。接下来我们以鼠标单击事件为例,展示如何添加监听事件。

// 在viewer3D下绑定监听事件,其中传入的回调函数为事件发生后被触发的处理函数
viewer3D.addEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked,getCamera);

// 定义监听事件的处理函数
function getCamera() {
  // 在控制台输出相机位置信息
  console.log(viewer3D.getCameraStatus());
}

完成鼠标点击事件的绑定后,运行代码就可以看到,单击鼠标时,控制台就会输出当前相机的位置信息。

# 移除监听事件

若不再需要对事件进行监听,可以通过移除监听事件的接口取消监听。

// 移除监听事件
viewer3D.removeEventListener(Glodon.Bimface.Viewer.Viewer3DEvent.MouseClicked,getCamera);
# 不同事件的区别

Viewer3DEvent (opens new window)中,存在两种加载完毕事件:ViewAdded和ModelAdded。前者监听3D场景加载完毕事件,即只监听第一个模型的加载完毕事件。后者监听场景中的每个模型的加载完毕事件。

ViewerGISEvent (opens new window)中,也存在两种加载完毕事件:SceneAdded和LayerAdded,分别对应GIS场景初始化完毕和图层初始化完毕事件。前者表示GIS场景初始化完成,包括场景的引擎数据以及地图数据初始化完成,不关注场景中的其他图层数据加载情况。后者监听场景中的图层初始化完成,每一图层的瓦片数据、业务数据等初始化完成均会触发图层初始化完毕事件。需要注意的是,GIS场景的数据加载方式为按需加载,所以数据初始化完成不代表模型全部加载显示。