javascript利用canvas實現(xiàn)鼠標拖拽功能
更新時間:2020年07月23日 15:22:17 作者:騎著代碼去流浪
這篇文章主要為大家詳細介紹了javascript利用canvas實現(xiàn)鼠標拖拽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
利用canvas實現(xiàn)鼠標拖拽功能,當在元素上按下鼠標并移動時,元素跟著鼠標移動。
效果:
主要思路:
當鼠標按下時,用isPointInPath方法判斷鼠標位置是否在元素上,如果在則鼠標移動時元素跟著移動;當鼠標抬起時,將鼠標移動事件和抬起事件置空。
代碼如下:
<canvas id="can" width="400" height="400"></canvas> <script type="text/javascript"> var can = document.getElementById("can"); var ctx = can.getContext("2d"); //創(chuàng)建圓滑塊 function createBlock(a,b){ ctx.beginPath(); ctx.fillStyle = "red"; ctx.arc(a,b,30,0,Math.PI*2); ctx.fill(); } //鼠標按下,將鼠標按下坐標保存在x,y中 createBlock(50,50); can.onmousedown = function(ev){ var e = ev||event; var x = e.clientX; var y = e.clientY; drag(x,y); }; //拖拽函數(shù) function drag(x,y){ // 按下鼠標判斷鼠標位置是否在圓上,當畫布上有多個路徑時,isPointInPath只能判斷最后那一個繪制的路徑 if(ctx.isPointInPath(x,y)){ //路徑正確,鼠標移動事件 can.onmousemove = function(ev){ var e = ev||event; var ax = e.clientX; var ay = e.clientY; //鼠標移動每一幀都清楚畫布內容,然后重新畫圓 ctx.clearRect(0,0,can.width,can.height); createBlock(ax,ay); }; //鼠標移開事件 can.onmouseup = function(){ can.onmousemove = null; can.onmouseup = null; }; }; } </script>
更多精彩文章請點擊專題: Javascript拖拽特效匯總
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
微信小程序實現(xiàn)帶參數(shù)的分享功能(兩種方法)
本文通過兩種方法給大家介紹微信小程序實現(xiàn)帶參數(shù)的分享,需要的朋友可以參考下2019-05-05JavaScript之Canvas_動力節(jié)點Java學院整理
這篇文章主要介紹了JavaScript之Canvas,Canvas是HTML5新增的組件,它就像一塊幕布,可以用JavaScript在上面繪制各種圖表、動畫等2017-07-07解決Babylon.js中AudioContext was not allowed&nbs
這篇文章主要介紹了解決Babylon.js中AudioContext was not allowed to start異常問題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04