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 相关文章推荐
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
vue input输入框关键字筛选检索列表数据展示
Oct 26 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
jquery实现拖拽小方块效果
Dec 10 jQuery
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
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php数组随机排序实现方法
2015/06/13 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
python之pandas用法大全
2018/03/13 Python
PyQT实现多窗口切换
2018/04/20 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python之list对应元素求和的方法
2018/06/28 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
祖国在我心中的演讲稿
2014/05/04 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
死亡赔偿协议书
2015/01/28 职场文书
金砖之国观后感
2015/06/11 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书