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 相关文章推荐
javascript读取RSS数据
Jan 20 Javascript
JavaScript 继承使用分析
May 12 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
Nov 07 Javascript
jquery常用操作小结
Jul 21 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
详解Vuex管理登录状态
Nov 13 Javascript
使用js和canvas实现时钟效果
Sep 08 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 Javascript
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
长波有什么东西
2021/03/01 无线电
计数器详细设计
2006/10/09 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Python编写电话薄实现增删改查功能
2016/05/07 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
python写入文件自动换行问题的方法
2019/07/05 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
Django之form组件自动校验数据实现
2020/01/14 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
部队万能检讨书
2014/02/20 职场文书
党员自评材料范文
2014/12/17 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
创业计划书之养殖业
2019/10/11 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP