在cesium中,用户鼠标左键双击视图或entity时,实际触发的是两次click和一次dbclick事件,非常影响代码设计,本文记录了如何区分单击【left_click】和双击事件【left_double_click】的代码及原理方法。
var timer= null; var handler = new cesium.screenspaceeventhandler(viewer.scene.canvas); handler.setinputaction(function(movement){ cleartimeout(timer); timeoutid= window.settimeout(function(){ console.log('左键单击事件:',click.position); //这里处理单击事件代码 }, 200); },cesium.screenspaceeventtype.left_click); handler.setinputaction(function(movement){ cleartimeout(timer); }, cesium.screenspaceeventtype.left_double_click );
单击:用户单击 - 清除定时器 - 定时器赋值 - 200ms后执行相应单击代码 - 单击事件完成。
双击:用户双击 - 进入到单击事件 - 清除定时器 - 定时器赋值 - 200ms后执行相应单击代码 - 进入到双击事件 - 清楚定时器 - 单击事件代码取消执行。
如对本文有疑问, 点击进行留言回复!!
asp.net中ajax和一般处理程序(handler.ashx)的交互
egg.js创建项目,目录介绍,简单使用,sequelize mysql使用
网友评论