JS实现判断碰撞的方法


Posted in Javascript onFebruary 11, 2015

本文实例讲述了JS实现判断碰撞的方法。分享给大家供大家参考。具体如下:

JS判断碰撞方法:

/** 判断是否碰撞 

 * @param obj 原对象 

 * @param dobj 目标对象 

 */  

function impact(obj, dobj) {  

    var o = {  

        x: getDefaultStyle(obj, 'left'),  

        y: getDefaultStyle(obj, 'top'),  

        w: getDefaultStyle(obj, 'width'),  

        h: getDefaultStyle(obj, 'height')  

    }  

  

    var d = {  

        x: getDefaultStyle(dobj, 'left'),  

        y: getDefaultStyle(dobj, 'top'),  

        w: getDefaultStyle(dobj, 'width'),  

        h: getDefaultStyle(dobj, 'height')  

    }  

  

    var px, py;  

  

    px = o.x <= d.x ? d.x : o.x;  

    py = o.y <= d.y ? d.y : o.y;  

  

    // 判断点是否都在两个对象中  

    if (px >= o.x && px <= o.x + o.w && py >= o.y && py <= o.y + o.h && px >= d.x && px <= d.x + d.w && py >= d.y && py <= d.y + d.h) {  

        return true;  

    } else {  

        return false;  

    }  

}  

  

/** 获取对象属性 

 * @param obj       对象 

 * @param attribute 属性 

 */  

function getDefaultStyle(obj, attribute) {  

    return parseInt(obj.currentStyle ? obj.currentStyle[attribute] : document.defaultView.getComputedStyle(obj, false)[attribute]);  

}

示例如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  

<html>  

 <head>  

  <title> demo </title>  

  <style type="text/css">  

  body{margin:0px;}  

    .main{position:relative;}  

    #f1{position:absolute; background:#FF0000; top:100px; left:100px; width:200px; height:200px; z-index:999}  

    #f2{position:absolute; background:#FFFF00; top:0px; left:0px; width:600px; height:150px;}  

  </style>  

 </head>  

 <body>  

 <div class="main">  

    <div id="f1"></div>  

    <div id="f2"></div>  

 </div>  

 <script type="text/javascript">  

    var o = document.getElementById("f1");  

    var d = document.getElementById("f2");  

    alert(impact(o, d)); 
    function impact(obj, dobj) {  

        var o = {  

            x: getDefaultStyle(obj, 'left'),  

            y: getDefaultStyle(obj, 'top'),  

            w: getDefaultStyle(obj, 'width'),  

            h: getDefaultStyle(obj, 'height')  

        } 
        var d = {  

            x: getDefaultStyle(dobj, 'left'),  

            y: getDefaultStyle(dobj, 'top'),  

            w: getDefaultStyle(dobj, 'width'),  

            h: getDefaultStyle(dobj, 'height')  

        } 
        var px, py; 
        px = o.x <= d.x ? d.x : o.x;  

        py = o.y <= d.y ? d.y : o.y;  

  

        // 判断点是否都在两个对象中  

        if (px >= o.x && px <= o.x + o.w && py >= o.y && py <= o.y + o.h && px >= d.x && px <= d.x + d.w && py >= d.y && py <= d.y + d.h) {  

            return true;  

        } else {  

            return false;  

        }  

    } 
    function getDefaultStyle(obj, attribute) {  

        return parseInt(obj.currentStyle ? obj.currentStyle[attribute] : document.defaultView.getComputedStyle(obj, false)[attribute]);  

    }  

 </script>  

 </body>  

</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 学习笔记(六)
Dec 31 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
Feb 18 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
javascript异步编程代码书写规范Promise学习笔记
Feb 11 #Javascript
jquery实现动态操作select选中
Feb 11 #Javascript
JS操作HTML自定义属性的方法
Feb 10 #Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 #Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 #Javascript
javascript中定义类的方法详解
Feb 10 #Javascript
JavaScript判断浏览器类型的方法
Feb 10 #Javascript
You might like
php设计模式之观察者模式的应用详解
2013/05/21 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
js实现简单的秒表
2020/01/16 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python实现外卖信息管理系统
2018/01/11 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
python socket 聊天室实例代码详解
2019/11/14 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
六查六看剖析材料
2014/10/06 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
队名及霸气口号大全
2015/12/25 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js