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 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
基于jQuery的仿flash的广告轮播代码
Nov 04 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
JS实现图片上传预览功能
Nov 21 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
微信小程序 详解Page中data数据操作和函数调用
Jan 12 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
jQuery实现带进度条的轮播图
Sep 13 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
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
js读取cookie方法总结
2014/10/31 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
自定义django admin model表单提交的例子
2019/08/23 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
大学生实习感言
2014/01/16 职场文书
供用电专业求职信
2014/07/07 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
安全生产月宣传标语
2014/10/06 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
院系推荐意见
2015/06/05 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
护理培训心得体会
2016/01/22 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers