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 相关文章推荐
JQuery for与each性能比较分析
May 14 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
微信小程序实现电影App导航和轮播
Nov 30 Javascript
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python实现猜数游戏
2020/03/27 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python插件机制实现详解
2020/05/04 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
宿舍保安职务说明书
2014/02/25 职场文书
诚信考试承诺书
2014/03/27 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
单位租车协议书
2015/01/29 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL