日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

js實(shí)現(xiàn)拖拽與碰撞檢測

瀏覽:181日期:2024-04-19 13:34:08

本文實(shí)例為大家分享了js實(shí)現(xiàn)拖拽與碰撞檢測的具體代碼,供大家參考,具體內(nèi)容如下

js實(shí)現(xiàn)拖拽與碰撞檢測

拖拽

原理分析

對于拖拽一個div盒子,首先我們需要將鼠標(biāo)移動到盒子上,然后按住鼠標(biāo)左鍵,移動鼠標(biāo)到目標(biāo)位置,再松開鼠標(biāo),對于這一過程的分析,

顯然需要三個鼠標(biāo)事件:

按住鼠標(biāo):onmousedown 移動鼠標(biāo):onmousemove 松開鼠標(biāo):onmouseup

實(shí)現(xiàn)步驟

1、**鼠標(biāo)按下時:**我們獲取鼠標(biāo)當(dāng)前所在的位置距離頁面左邊界與上邊界的距離,分別減去盒子距離頁面左邊界與上邊界的值,這樣我們

就得到了鼠標(biāo)距離盒子左邊界與上邊界的值;

2、**鼠標(biāo)移動時:**我們重新獲取此時鼠標(biāo)距離頁面左邊界與上邊界的值,再用它們減去步驟一中得到的鼠標(biāo)距離盒子左邊界與上邊界的

值,將得到的值重新賦給盒子,這樣盒子就能與鼠標(biāo)保持相對靜止,在頁面上移動;

3、**松開鼠標(biāo)時:**將鼠標(biāo)移動事件清除。

實(shí)現(xiàn)代碼

var oDiv = document.getElementById(’box2’); oDiv.onmousedown = function(ev){ var e = ev||window.event; var offsetX = e.clientX - oDiv.offsetLeft; var offsetY = e.clientY - oDiv.offsetTop; document.onmousemove = function(ev){ var e = ev||window.event; var l =e.clientX-offsetX; var t = e.clientY- offsetY;if(l<=0){ l=0; } if(t<=0){ t=0; } var windowWidth =document.documentElement.clientWidth||document.body.clientWidth; if(l>=windowWidth-oDiv.offsetWidth){ l=windowWidth-oDiv.offsetWidth; } var windowHeight = document.documentElement.clientHeight||document.body.clientHeight if(t>=windowHeight-oDiv.offsetHeight){ t=windowHeight-oDiv.offsetHeight; } oDiv.style.left = l + 'px'; oDiv.style.top = t + 'px'; } } document.onmouseup = function(){ document.onmousemove = null; }

碰撞檢測

原理分析

js中碰撞檢測在應(yīng)用于制作一些小游戲,如飛機(jī)大戰(zhàn)、打磚塊、貪吃蛇等,那么如何實(shí)現(xiàn)碰撞檢測呢?

對于兩個矩形方塊之間的碰撞,如果直接思考如何書寫代碼檢測它們之間有沒有發(fā)生接觸,這是一個比較難的事情,我們可以換一個思路,

找出它們沒有發(fā)生碰撞得情況,排除這些情況,那么剩余的情況必然是發(fā)生了碰撞。

如下圖,檢測方塊a與b之間是否發(fā)生碰撞,我們可以分別獲取a與b的上、下邊的top值,左右邊的left值,那么以下四種情況是沒有發(fā)生碰撞的:

js實(shí)現(xiàn)拖拽與碰撞檢測

不會發(fā)生碰撞的4種情況:

1、a左>b右2、a上>b下3、a右<b左4、a下<b上

a左:a.offsetLeft;a右:a.offsetLeft + a.offsetWidth;a上:a.offsetTop;a下:a.offsetTop+a.offsetHeight;b左:b.offsetLeft;b右: b.offsetLeft + b.offsetWidth;b上:b.offsetTop;b下: b.offsetTop+b.offsetHeight;

只要發(fā)生了上面四種情況任意一種,那么就沒有碰撞:

實(shí)現(xiàn)代碼

function knock(node1,node2){ var l1 = node1.offsetLeft; var r1 = node1.offsetLeft + node1.offsetWidth; var t1 = node1.offsetTop; var b1 = node1.offsetTop+node1.offsetHeight; var l2 = node2.offsetLeft; var r2 = node2.offsetLeft + node2.offsetWidth; var t2 = node2.offsetTop; var b2 = node2.offsetTop+node2.offsetHeight; if(l2>r1||r2<l1||t2>b1||b2<t1){ return false; }else{ return true; } }

拖拽與碰撞完整代碼

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <title>Document</title> <style> #box1{ width: 100px;height: 100px;position: absolute; top: 200px;left: 250px;background-color: blueviolet; } #box2{ width: 100px;height: 100px;position: absolute; top: 400px;left: 550px;background-color: salmon; } </style></head><body> <div id='box1'></div> <div id='box2'></div> <script> var box11 = document.getElementById('box1') var box21 = document.getElementById('box2')if(knock(box21,box11)){ box1.style.backgroundColor='blue'; }else{ box1.style.backgroundColor='grey'; }function knock(node1,node2){ var l1 = node1.offsetLeft; var r1 = node1.offsetLeft + node1.offsetWidth; var t1 = node1.offsetTop; var b1 = node1.offsetTop+node1.offsetHeight; var l2 = node2.offsetLeft; var r2 = node2.offsetLeft + node2.offsetWidth; var t2 = node2.offsetTop; var b2 = node2.offsetTop+node2.offsetHeight; if(l2>r1||r2<l1||t2>b1||b2<t1){return false; }else{return true; } } var oDiv = document.getElementById(’box2’); oDiv.onmousedown = function(ev){ var e = ev||window.event; var offsetX = e.clientX - oDiv.offsetLeft; var offsetY = e.clientY - oDiv.offsetTop; document.onmousemove = function(ev){var e = ev||window.event;var l =e.clientX-offsetX;var t = e.clientY- offsetY;if(knock(box21,box11)){ box1.style.backgroundColor='blue';}else{ box1.style.backgroundColor='grey';}if(l<=0){ l=0;}if(t<=0){ t=0;}var windowWidth =document.documentElement.clientWidth||document.body.clientWidth;if(l>=windowWidth-oDiv.offsetWidth){ l=windowWidth-oDiv.offsetWidth;}var windowHeight = document.documentElement.clientHeight||document.body.clientHeightif(t>=windowHeight-oDiv.offsetHeight){ t=windowHeight-oDiv.offsetHeight;}oDiv.style.left = l + 'px';oDiv.style.top = t + 'px'; } } document.onmouseup = function(){ document.onmousemove = null; } </script></body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品伊人| 麻豆免费精品视频| 日韩网站在线| 乱人伦精品视频在线观看| 男人的天堂久久精品| 亚洲色图国产| 日韩中文字幕在线一区| 国产精品亚洲欧美一级在线| 91日韩欧美| 日本欧美在线看| 国产精品日本一区二区不卡视频 | 国产成人免费视频网站视频社区| 欧美影院三区| 国际精品欧美精品| 亚洲一级大片| 夜鲁夜鲁夜鲁视频在线播放| 国产亚洲一区在线| 国产精品欧美一区二区三区不卡| 国产一区二区三区亚洲| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美一区二区三区久久精品| 国产亚洲一区二区手机在线观看| 久久久一二三| 午夜欧美在线| 亚洲精品影视| 麻豆成人综合网| 婷婷国产精品| 日韩二区三区四区| 精品久久在线| 天堂成人国产精品一区| 欧美片第1页综合| 久久精品高清| 最新亚洲一区| 久久人人97超碰国产公开结果| 奇米亚洲欧美| 午夜久久tv| 色综合视频一区二区三区日韩| 国产亚洲激情| 婷婷久久一区| 欧美亚洲在线日韩| 亚洲伊人av| 奇米亚洲欧美| 国产剧情一区| 久久不卡日韩美女| 91麻豆精品激情在线观看最新| 久久久精品国产**网站| 红桃视频亚洲| 久久福利影视| 免费成人在线影院| 亚洲午夜电影| 久久在线视频免费观看| 香蕉精品久久| 999久久久精品国产| 999国产精品| 首页国产欧美日韩丝袜| 老司机精品视频在线播放| 国产精品视频首页| 欧美一级二级视频| 美女国产精品久久久| 国产精品中文| 国产精品成久久久久| 999国产精品视频| 日本不卡一二三区黄网| 国产精品亚洲一区二区在线观看| 国产精品第一| 999久久久免费精品国产| 国产一区日韩欧美| 蜜桃视频第一区免费观看| 国产私拍福利精品视频二区| 日本强好片久久久久久aaa| 夜夜精品视频| 在线精品国产亚洲| 亚州国产精品| 天堂av在线| 日韩一区免费| 国产 日韩 欧美 综合 一区| 爽爽淫人综合网网站| 亚洲精品极品少妇16p| 日韩动漫一区| 欧美一区网站| 免费久久精品视频| 亚洲精品视频一二三区| 精品一区不卡| 久久亚洲欧洲| 韩国精品主播一区二区在线观看 | 欧美亚洲日本精品| 国产精品二区不卡| 久久av在线| 亚洲91精品| 欧美午夜三级| 一区二区精品伦理...| 精品一区二区三区中文字幕视频| 国产aⅴ精品一区二区四区| 亚洲免费一区三区| 激情婷婷综合| 久久精品高清| 精品三级在线观看视频| 综合激情视频| 视频在线观看一区二区三区| 最近高清中文在线字幕在线观看1| 激情久久99| 亚洲一区亚洲| 欧美日韩精品免费观看视完整| 18国产精品| 99视频精品全国免费| 久久精品不卡| 久久亚洲成人| 亚洲v在线看| 中文字幕中文字幕精品| 亚洲激情精品| 好看不卡的中文字幕| 91精品二区| 国产亚洲一区二区手机在线观看 | 成人三级高清视频在线看| 视频一区视频二区中文| 亚洲人成毛片在线播放女女| 69堂免费精品视频在线播放| 精品国产乱码| 欧美日韩精品一区二区视频| 亚洲专区一区| 国产一区二区亚洲| 国产精品网站在线看| 麻豆国产精品777777在线| 亚洲精品成a人ⅴ香蕉片| 免费黄网站欧美| 国产伦精品一区二区三区千人斩| 日韩精品一级| 国精品产品一区| 欧美特黄一级| 亚洲18在线| 精品国产麻豆| 在线精品小视频| 亚洲美女久久精品| 国产精品久久久久久av公交车| 特黄毛片在线观看| 日av在线不卡| 免费福利视频一区二区三区| 欧美激情99| 最新亚洲国产| 国产精品99一区二区三| 国产精品毛片久久久| 色老板在线视频一区二区| 一区在线观看| 日韩毛片一区| 精品久久美女| 色综合视频一区二区三区日韩| 国产盗摄——sm在线视频| 国产精品欧美三级在线观看 | 精品国产免费人成网站| 日韩一区二区三区高清在线观看| 999国产精品999久久久久久| 韩国久久久久久| 日韩在线第七页| 欧美国产一级| 免费精品国产| 久久av国产紧身裤| 美女精品网站| 日韩精品亚洲aⅴ在线影院| av资源亚洲| 国产精品视频一区二区三区四蜜臂 | 国产一区二区三区国产精品| 亚洲精品三级| 亚洲第一精品影视| 久久中文亚洲字幕| 亲子伦视频一区二区三区| 欧美综合精品| 国产精品qvod| 色爱综合网欧美| 国产成人精品一区二区免费看京| 欧美精品中文| 激情偷拍久久| 麻豆视频一区| 国产剧情一区二区在线观看| 日韩专区视频网站| 亚洲资源在线| 国产精品午夜一区二区三区| 涩涩涩久久久成人精品| 日本在线一区二区三区| 日韩精品一级| 欧美aa一级| 日韩av二区在线播放| 日韩精品乱码av一区二区| 综合国产视频| 亚洲精品三级| 色在线视频观看| 国产精品蜜月aⅴ在线| 欧美久久一区二区三区| 国产精品资源| 成人国产精选| 免费精品一区| 国产成人免费视频网站视频社区| 色婷婷久久久| 99热国内精品| 日韩中文字幕区一区有砖一区 | 日本va欧美va瓶| 日产精品一区二区| 国产精品巨作av| 婷婷精品在线| 日韩欧美精品一区| 九九精品调教|