js实现碰撞检测特效代码分享


Posted in Javascript onOctober 16, 2016

自己做了碰撞检测的封装,先看下实例demo,在看封装

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>碰撞检测</title>
 <style type="text/css">
  *{
  margin: 0;
  padding: 0;
  }
  #divA,#divB{
  width: 200px;
  height: 200px;
  background-color: purple;
  font-size: 50px;
  line-height: 200px;
  text-align: center;
  position: absolute;
  color: #fff;
  }
  #divA{
  left: 30px;
  top: 30px;
  z-index: 5;
  }
  #divB{
  left: 300px;
  top: 300px;
  }
 </style>
 </head>
 <body>
 <div id="divA">A</div>
 <div id="divB">B</div>
 </body>
 <script type="text/javascript">
 var divA = document.getElementById("divA");
 var divB = document.getElementById("divB");
 
 
 divA.onmousedown = function (e) {
  
  var event1 = window.event || e;
  
  
  var startX = event1.clientX;
  
  var startY = event1.clientY;
  
  document.onmousemove = function (j) {
  
  var event2 = window.event || j;
  
  var endX = event2.clientX;
  var endY = event2.clientY;
  
  divA.style.left = divA.offsetLeft + (endX - startX) + "px";
  divA.style.top = divA.offsetTop + (endY - startY) + "px";
  
  startX = endX;
  startY = endY;
  
  if (isCrash(divA,divB) == true) {
   
   divA.style.backgroundColor = "red";
  } else{
   
   divA.style.backgroundColor = "purple";
  };
  }
 }
 
 
 divA.onmouseup = function () {
  
  document.onmousemove = null;
 }
 
 
 function isCrash (obj1,obj2) {
  
  var boolCrash = true;
  
  var left1 = obj1.offsetLeft;
  
  var right1 = obj1.offsetLeft + obj1.offsetWidth;
  
  var top1 = obj1.offsetTop;
  
  var bottom1 = obj1.offsetTop + obj1.offsetHeight;
  
  var left2 = obj2.offsetLeft;
  
  var right2 = obj2.offsetLeft + obj2.offsetWidth;
  
  var top2 = obj2.offsetTop;
  
  var bottom2 = obj2.offsetTop + obj2.offsetHeight;
  
  
  if (right1 > left2 && left1 < right2 && bottom1 > top2 && top1 < bottom2) {
  boolCrash = true;
  } else{
  boolCrash = false;
  }
  return boolCrash;
 }
 
 </script>
</html>

函数封装

function isCrash (obj1,obj2) {
  
  var boolCrash = true;//假设true为碰撞
  
  var left1 = obj1.offsetLeft;
  
  var right1 = obj1.offsetLeft + obj1.offsetWidth;
  
  var top1 = obj1.offsetTop;
  
  var bottom1 = obj1.offsetTop + obj1.offsetHeight;
 
  var left2 = obj2.offsetLeft;
  
  var right2 = obj2.offsetLeft + obj2.offsetWidth;
  
  var top2 = obj2.offsetTop;
  
  var bottom2 = obj2.offsetTop + obj2.offsetHeight;
  
  
  if (right1 > left2 && left1 < right2 && bottom1 > top2 && top1 < bottom2) {
  boolCrash = true;
  } else{
  boolCrash = false;
  }
  return boolCrash;
 }
Javascript 相关文章推荐
Javascript 跨域访问解决方案
Feb 14 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 Javascript
浅谈Javascript面向对象编程
Nov 15 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 Javascript
Webpack框架核心概念(知识点整理)
Dec 22 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 Javascript
js+css3制作时钟特效
Oct 16 #Javascript
js实现可旋转的立方体模型
Oct 16 #Javascript
移动端滑动插件Swipe教程
Oct 16 #Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 #Javascript
js实现点击图片自动提交action的简单方法
Oct 16 #Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 #Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 #Javascript
You might like
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
vue调用高德地图实例代码
2017/04/28 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
Python三级目录展示的实现方法
2016/09/28 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python统计文章中单词出现次数实例
2020/02/27 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
一份恶作剧的检讨书
2014/09/13 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
教代会闭幕词
2015/01/28 职场文书
放假通知范文
2015/04/14 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
一个都不能少观后感
2015/06/04 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
2016年寒假生活小结
2015/10/10 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers