监听事件

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

教程

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

事件相关类

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

  • Viewer3DEvent:三维模型场景相关的监听事件。包括相机位置发生变化事件、鼠标点击事件、模型数据加载完成事件、楼层爆炸事件等。

  • ViewerDrawingEvent:图纸模型相关的监听事件。包括鼠标点击事件、图元点击事件、鼠标悬停事件等。

  • ViewerGISEvent:GIS场景相关的监听事件。包括场景加载完成事件、图层加载完成事件、鼠标点击事件等。

  • WebApplication3DEvent:三维模型应用相关的监听事件。包括工具栏按钮点击事件、主视图点击事件。

  • WebApplicationDrawingEvent:图纸应用相关的监听事件。包括缩放比例变化事件等。

  • WebApplicationGISEvent:GIS场景应用相关的监听事件。包括图层树点击事件等。

  • MeasureEvent:测量相关的监听事件。包括测量完毕事件和测量中事件。

  • SectionBoxEvent:剖切盒相关的监听事件。包括剖切盒变化事件。

  • ExternalObjectEditorToolbarEvent:外部构件编辑器工具条相关的监听事件。包括编辑功能切换事件、退出编辑器事件。

绑定监听事件

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

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

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

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

移除监听事件

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

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

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

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