JS实现碰撞检测的方法分析


Posted in Javascript onJanuary 19, 2018

本文实例讲述了JS实现碰撞检测的方法。分享给大家供大家参考,具体如下:

一个简单的碰撞检测例子,检测div1是否和div2发生碰撞,当div1碰到div2时,改变div2的颜色,看测试图

JS实现碰撞检测的方法分析

看一下分析图:

JS实现碰撞检测的方法分析

当div1在div2的上边线(t2)以上的区域活动时,始终碰不上
当div1在div2的右边线(r2)以右的区域活动时,始终碰不上
当div1在div2的下边线(b2)以下的区域活动时,始终碰不上
当div1在div2的左边线(r2)以左的区域活动时,始终碰不上

除了以上四种情况,其他情况表示div1和div2碰上了,下面试完整测试代码

HTML部分:

<div id="div1"></div>
<div id="div2"></div>

css部分:

<style>
    #div1{
      width:100px ;height: 100px;background: green;
      position: absolute;
    }
    #div2{
      width:100px ;height: 100px;background: yellow;
      position: absolute;left: 300px;top: 200px;z-index: -1;
    }
</style>

JS部分:

<script>
  window.onload = function () {
    var oDiv = document.getElementById('div1');
    var oDiv2 = document.getElementById('div2');
    var disX = 0;
    var disY = 0;
    oDiv.onmousedown = function (ev) {
      var ev = ev|| window.event;
      disX = ev.clientX - oDiv.offsetLeft;
      disY = ev.clientY - oDiv.offsetTop;
      document.onmousemove = function (ev) {
        var ev = ev|| window.event;
        var t1 = oDiv.offsetTop;
        var l1 = oDiv.offsetLeft;
        var r1 = oDiv.offsetLeft + oDiv.offsetWidth;
        var b1 = oDiv.offsetTop + oDiv.offsetHeight;
        var t2 = oDiv2.offsetTop;
        var l2 = oDiv2.offsetLeft;
        var r2 = oDiv2.offsetLeft + oDiv2.offsetWidth;
        var b2 = oDiv2.offsetTop + oDiv2.offsetHeight;
        if(b1<t2 || l1>r2 || t1>b2 || r1<l2){// 表示没碰上
        }else{
          oDiv2.style.background = 'blue';
        }
        oDiv.style.left = ev.clientX - disX +'px';
        oDiv.style.top = ev.clientY - disY +'px';
      }
      document.onmouseup = function () {
        document.onmousemove = null;
        document.onmouseup = null;
      }
      return false;
    }
  }
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的表格排序
Sep 11 Javascript
某页码显示的helper 少量调整,另附js版
Sep 12 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
javascript实现des解密加密全过程
Apr 03 Javascript
jQuery 生成svg矢量二维码
Aug 09 Javascript
JS中数组重排序方法
Nov 11 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
浅谈React之状态(State)
Sep 19 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
angular1配合gulp和bower的使用教程
Jan 19 #Javascript
浏览器调试动态js脚本的方法(图解)
Jan 19 #Javascript
Angular实现搜索框及价格上下限功能
Jan 19 #Javascript
vue 插值 v-once,v-text, v-html详解
Jan 19 #Javascript
web前端vue实现插值文本和输出原始html
Jan 19 #Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 #Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 #jQuery
You might like
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python中format()格式输出全解
2019/04/12 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
python怎么判断素数
2020/07/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
如何获得EntityManager
2014/02/09 面试题
建议书的格式
2014/05/12 职场文书
1000字打架检讨书
2014/11/03 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
安全生产奖惩制度
2015/08/06 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS