JS实现碰撞检测的方式剖析

本文实例讲述了JS实现碰撞检测的方式。分享给人人供人人参考,详细如下: 一个简朴的碰撞检测例子,检测div1是否和div2发生碰撞,当div1碰着div2时,改变div2的颜色,看测试图 看一下剖析图:...

本文实例讲述了JS实现碰撞检测的方式。分享给人人供人人参考,详细如下:

一个简朴的碰撞检测例子,检测div1是否和div2发生碰撞,当div1碰着div2时,改变div2的颜色,看测试图


看一下剖析图:


当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>


思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入

3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/396

  • 发表于 2021-02-18 06:35
  • 阅读 ( 228 )
  • 分类:互联网

0 条评论

请先 登录 后评论
leexs
leexs

698 篇文章

你可能感兴趣的文章

相关问题