Cesium区分单击【LEFT_CLICK】和双击事件【LEFT_DOUBLE_CLICK】
问题描述
在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后执行相应单击代码 - 进入到双击事件 - 清楚定时器 - 单击事件代码取消执行。
作者:码探长
公众号:码探长
如果你想得到探长更多相关技术文章的消息推送,或者获取相关下载资源,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。