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 相关文章推荐
解决遍历时Array.indexOf产生的性能问题
Jul 03 Javascript
浅谈JavaScript函数节流
Dec 09 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
js文本框输入内容智能提示效果
Dec 02 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
巧妙运用v-model实现父子组件传值的方法示例
Apr 07 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
JavaScript判断浏览器版本的方法
Nov 03 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP导入导出Excel代码
2015/07/07 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
Jquery读取URL参数小例子
2013/08/30 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
对比分析json及XML
2014/11/28 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
简单了解什么是神经网络
2017/12/23 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
python爬虫中多线程的使用详解
2019/09/23 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
python第三方库学习笔记
2020/02/07 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
python中pickle模块浅析
2020/12/29 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
上海方立数码笔试题
2013/10/18 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
生产部岗位职责范文
2014/02/07 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
个人求职自荐信范文
2015/03/06 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python