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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
JS setCapture 区域外事件捕捉
Mar 18 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
Mar 09 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
Oct 20 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
手把手15分钟搭一个企业级脚手架
Sep 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
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Python如何操作docker redis过程解析
2020/08/10 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
小区门卫岗位职责
2013/12/31 职场文书
庆七一活动方案
2014/01/25 职场文书
中学教师请假制度
2014/02/03 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python