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后執行相應單擊代碼 - 進入到雙擊事件 - 清楚定時器 - 單擊事件代碼取消執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM