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中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
Dec 02 Javascript
js 静态动态成员 and 信息的封装和隐藏
May 29 Javascript
图片无缝滚动代码(向左/向下/向上)
Apr 10 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
js控制div弹出层实现方法
May 11 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
微信小程序云开发之云函数详解
May 16 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
PHP语法速查表
2006/12/06 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
vue写一个组件
2018/04/09 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
用Python编写web API的教程
2015/04/30 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
本科生详细的自我评价
2013/09/19 职场文书
计算机开发个人求职信范文
2013/09/26 职场文书
家长学校培训材料
2014/08/20 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
天坛导游词
2015/02/02 职场文书
单位证明范文
2015/06/18 职场文书
高三英语教学反思
2016/03/03 职场文书
python基础详解之if循环语句
2021/04/24 Python
MySQL新手入门进阶语句汇总
2022/09/23 MySQL