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 相关文章推荐
showModalDialog 和 showModelessDialog
Jan 22 Javascript
JQUBar 基于JQUERY的柱状图插件
Nov 23 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
Sep 19 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
ES6中字符串的使用方法扩展
Jun 04 Javascript
JavaScript闭包原理与用法学习笔记
May 29 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
React实现轮播效果
2020/08/25 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
关于Python作用域自学总结
2019/06/10 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
秋季运动会广播稿(30篇)
2014/09/13 职场文书
离婚协议书范文2015
2015/01/26 职场文书
股份转让协议书范本
2015/01/27 职场文书
预备党员自我评价范文
2015/03/04 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书