当前位置: 首页 > Web前端 > JavaScript

从零开始学习3D可视化事件卸载和事件暂停

时间:2023-03-27 17:11:43 JavaScript

事件是用户或浏览器本身执行的某种动作,响应事件的函数称为事件处理器(或事件监听器)。事件处理程序的名称以“on”开头,例如点击事件的事件处理程序是onclick。接下来,我将继续学习如何在数字孪生可视化场景中卸载事件、暂停和恢复事件以及自定义事件。如果您在内存中保留大量未使用的事件处理程序,则卸载事件会影响性能。所以一定要在不需要的时候及时移除事件处理器。需要卸载事件时使用off()方法。这样,数字孪生可视化楼下的所有点击事件都清空了。假设数字孪生可视化对象有多个标记,在不影响其他标记和后面创建的标记的情况下,找到其中一个卸载事件。app.on("click",function(event){console.log("youclick!");});//卸载app.off("click");app.on("click",".Building",function(event){console.log("youclick!");});//卸载app.off("click",".Building");app.on("click",".Building",function(event){console.log("youclick1!");},"tag1");//卸载app.off("click",".Building","tag1");注意:if绑定数字孪生可视化事件时,如果加了条件,off的第二个参数必须传递条件。如果没有condition,需要传tag,condition需要传null。暂停和恢复事件如果一个事件被关闭,有时很难恢复,并且会找不到之前的回调方法。面对这种情况,提供了暂停事件的pauseEvent方法,其控制方式和标准与off类似。app.on("click",".Building",function(event){console.log("youclick!");},"tag1");//暂停app.pauseEvent("click",".Building","tag1");//恢复app.resumeEvent("click",".Building","tag1");自定义事件ThingJS内置了很多事件,但是如果自己写模块,也需要触发事件,怎么办?外部注册仍然使用on,需要触发的地方可以使用触发接口在外部触发事件。例如,编写一个数字双胞胎视觉警报管理器:classAlamrManager{constructor(){......}enable(){......app.trigger("AlarmEnable")......}setObjAlarm(obj,alarmLevel){......obj.trigger("alarm",{"level":alarmLevel})......}}外部注册如下:app.on("AlarmEnable",function(ev){......})app.query(".Thing").on("alarm",function(ev){if(ev.level=="critical"){......}......})————————————————————数字孪生可视化:https://www.thingjs.com/