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 相关文章推荐
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 Javascript
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
Dojo获取下拉框的文本和值实例代码
May 27 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
Sep 12 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
javascript实现下拉菜单效果
Feb 09 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
提升PHP执行速度全攻略(下)
2006/10/09 PHP
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python清除字符串里非字母字符的方法
2015/07/02 Python
python实现文本文件合并
2015/12/29 Python
Python算法之图的遍历
2017/11/16 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
优秀员工表扬信
2014/01/17 职场文书
产品委托授权书范本
2014/09/16 职场文书
护士自荐信怎么写
2015/03/06 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书