js 實現碰撞檢測的示例
更新時間:2020年10月28日 12:03:44 作者:星輝
這篇文章主要介紹了js 實現碰撞檢測的示例,幫助大家更好的制作js特效,美化自身網頁,感興趣的朋友可以了解下
碰撞檢測
目錄
- 代碼實例
- 與簡易拖拽的差異
- 下載源碼鏈接
代碼實例
<div id="box" style="background: #334;width: 100px;height: 100px;position: absolute;cursor: move;z-index: 999;"></div> <div id="box2" style="background: green;width: 100px;height: 100px;position: absolute;top: 200px;left: 500px;"></div> (function () { var dragging = false var boxX, boxY, mouseX, mouseY, offsetX, offsetY var box = document.getElementById('box') var box2 = document.getElementById('box2') var box2X, box2Y // 鼠標按下的動作 box.onmousedown = down // 鼠標的移動動作 document.onmousemove = move // 釋放鼠標的動作 document.onmouseup = up // 鼠標按下后的函數,e為事件對象 function down(e) { dragging = true // 獲取元素所在的坐標 boxX = box.offsetLeft boxY = box.offsetTop // 獲取元素box2所在的坐標 box2X = box2.offsetLeft box2Y = box2.offsetTop // 獲取鼠標所在的坐標 mouseX = parseInt(getMouseXY(e).x) mouseY = parseInt(getMouseXY(e).y) // 鼠標相對元素左和上邊緣的坐標 offsetX = mouseX - boxX offsetY = mouseY - boxY } // 鼠標移動調用的函數 function move(e){ if (dragging) { // 獲取移動后的元素的坐標 var x = getMouseXY(e).x - offsetX var y = getMouseXY(e).y - offsetY // 計算可移動位置的大小, 保證元素不會超過可移動范圍 var width = document.documentElement.clientWidth - box.offsetWidth var height = document.documentElement.clientHeight - box.offsetHeight // min方法保證不會超過右邊界,max保證不會超過左邊界 x = Math.min(Math.max(0, x), width) y = Math.min(Math.max(0, y), height) // 給元素及時定位 box.style.left = x + 'px' box.style.top = y + 'px' // 碰撞檢測 // x坐標值的范圍判斷,y坐標值的范圍判斷 var judge_x = (x >= box2X - box2.offsetWidth) && (x <= box2X + box2.offsetWidth) var judge_y = (y >= box2Y - box2.offsetHeight) && (y <= box2Y + box2.offsetHeight) if (judge_x && judge_y) { console.log("碰撞到") } } } // 釋放鼠標的函數 function up(e){ dragging = false } // 函數用于獲取鼠標的位置 function getMouseXY(e){ var x = 0, y = 0 e = e || window.event if (e.pageX) { x = e.pageX y = e.pageY } else { x = e.clientX + document.body.scrollLeft - document.body.clientLeft y = e.clientY + document.body.scrollTop - document.body.clientTop } return { x: x, y: y } } })()
與簡易拖拽的差異
碰撞檢測
// 碰撞檢測 // x坐標值的范圍判斷,y坐標值的范圍判斷 var judge_x = (x >= box2X - box2.offsetWidth) && (x <= box2X + box2.offsetWidth) var judge_y = (y >= box2Y - box2.offsetHeight) && (y <= box2Y + box2.offsetHeight) if (judge_x && judge_y) { console.log("碰撞到") }
下載源碼鏈接
以上就是js 實現碰撞檢測的示例的詳細內容,更多關于js 碰撞檢測的資料請關注腳本之家其它相關文章!
相關文章
用于節(jié)點操作的API,顛覆原生操作HTML DOM節(jié)點的API
敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法。在敏捷開發(fā)中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。2010-12-12layuiAdmin循環(huán)遍歷展示商品圖片列表的方法
今天小編就為大家分享一篇layuiAdmin循環(huán)遍歷展示商品圖片列表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09[js高手之路]設計模式系列課程-發(fā)布者,訂閱者重構購物車的實例
下面小編就為大家?guī)硪黄猍js高手之路]設計模式系列課程-發(fā)布者,訂閱者重構購物車的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08javaScript+turn.js實現圖書翻頁效果實例代碼
這篇文章主要介紹了javaScript+turn.js實現圖書翻頁效果實例代碼,重點講解turn.js 如何使用的。需要的朋友可以參考下2017-02-02