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 相关文章推荐
js 编程笔记 无名函数
Jun 28 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
Sep 19 Javascript
JSP基于Bootstrap分页显示实例解析
Jun 12 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
Oct 19 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
Sep 10 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 Javascript
vue中使用vue-pdf的方法详解
Sep 05 Javascript
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
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
js格式化时间小结
2014/11/03 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
详解Python中DOM方法的动态性
2015/04/11 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python利用微信公众号实现报警功能
2018/06/10 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
在django中自定义字段Field详解
2019/12/03 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
Python with语句用法原理详解
2020/07/03 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
公司委托书格式
2014/08/01 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python