原生js实现碰撞检测


Posted in Javascript onMarch 12, 2020

本文实例为大家分享了js实现碰撞检测的具体代码,供大家参考,具体内容如下

随手写了个简单的碰撞检测的代码。检测box1和box2是否发生碰撞,若发生碰撞,box2颜色发生随机改变,并反弹到随机位置。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box1,.box2{
      width: 100px;
      height: 100px;
      background-color: #f00;
      position:absolute;
    }
    .box2{
      background-color: #00f;
      left: 200px;
      top: 200px;
    }
    
  </style>
</head>
<body>
  <div class="box1"></div>
  <div class="box2"></div>
</body>
<script>
  var box1=document.querySelector(".box1");
  var box2=document.querySelector(".box2");
  box1.addEventListener("mousedown",mouseHandler);
  function mouseHandler(e){
    if(e.type==="mousedown"){
      e.preventDefault();
      document.elem=this;
      document.pointX= e.offsetX;
      document.pointY= e.offsetY;
      document.addEventListener("mousemove",mouseHandler);
      this.addEventListener("mouseup",mouseHandler);
    }else if(e.type==="mousemove"){
      this.elem.style.left= e.x-this.pointX+"px";
      this.elem.style.top= e.y-this.pointY+"px";
      hitText(this.elem,box2);
    }else if(e.type==="mouseup"){
      document.removeEventListener("mousemove",mouseHandler);
      this.removeEventListener("mouseup",mouseHandler);
    }
  }
  function hitText(elem1,elem2){
    var rect1=elem1.getBoundingClientRect();
    var rect2=elem2.getBoundingClientRect();
    var ponit1={x:rect1.x,y:rect1.y};
    var ponit4={x:rect1.x+rect1.width,y:rect1.y+rect1.height};
    if(
      ponit4.x>rect2.x
        &&ponit1.x<(rect2.x+rect2.width)
        &&ponit4.y>rect2.y
        &&ponit1.y<(rect2.y+rect2.height)){
      elem2.style.backgroundColor=randomColor();
      elem2.style.left=Math.round(Math.random()*document.documentElement.clientWidth)+"px";
      elem2.style.top=Math.round(Math.random()*document.documentElement.clientHeight)+"px";
    }
  }
  function randomColor(){
    var a=Math.round(Math.random()*255);
    var b=Math.round(Math.random()*255);
    var c=Math.round(Math.random()*255);
    var color="rgb("+ a+","+b+","+c+")";
    return color;
  }
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
js实现Form栏显示全格式时间时钟效果代码
Aug 19 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
jQuery实现手机上输入后隐藏键盘功能
Jan 04 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
Mar 12 #Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 #Javascript
JS实现碰撞检测效果
Mar 12 #Javascript
使用JS实现动态时钟
Mar 12 #Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 #Javascript
js实现动态时钟
Mar 12 #Javascript
package.json各个属性说明详解
Mar 11 #Javascript
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
常见python正则用法的简单实例
2016/06/21 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
高效使用Python字典的清单
2018/04/04 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python exit出错原因整理
2020/08/31 Python
python实现定时发送邮件
2020/12/23 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
列车长先进事迹材料
2014/01/25 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
爱之链教学反思
2014/04/30 职场文书
销售提升方案
2014/06/07 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript