原生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 相关文章推荐
js的闭包的一个示例说明
Nov 18 Javascript
javascript 文章截取部分无损html显示实现代码
May 04 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
Dec 30 Javascript
使用CSS3的scale实现网页整体缩放
Mar 18 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
May 07 Javascript
Angular中自定义Debounce Click指令防止重复点击
Jul 26 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
如何基于viewport vm适配移动端页面
Nov 13 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 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
PHP生成数组再传给js的方法
2014/08/07 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
node通过npm写一个cli命令行工具
2017/10/12 Javascript
vuex的简单使用教程
2018/02/02 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
Python中异常重试的解决方案详解
2017/05/05 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
如何使用python传入不确定个数参数
2020/02/18 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
2014学年自我鉴定
2014/02/23 职场文书
大学应届生的自我评价
2014/03/06 职场文书
信息管理专业自荐书
2014/06/05 职场文书
小学校长汇报材料
2014/08/20 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
网络营销计划书
2015/01/17 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript