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还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
Jun 16 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
30分钟快速掌握Bootstrap框架
May 24 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 Javascript
angularjs实现的购物金额计算工具示例
May 08 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
php实现微信发红包功能
2018/07/13 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
javascript网页关键字高亮代码
2008/07/30 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
Python AES加密模块用法分析
2017/05/22 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python实现两个文件合并功能
2018/04/01 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL