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实现的页内搜索代码
May 23 Javascript
js动态为代码着色显示行号
May 29 Javascript
原始的js代码和jquery对比体会
Sep 10 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
JS中三目运算符和if else的区别分析与示例
Nov 21 Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 Javascript
jquery实现下拉框多选方法介绍
Jan 03 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
微信小程序 select 下拉框组件功能
Sep 09 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文件读写操作之文件读取方法详解
2011/01/13 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
php实现json编码的方法
2015/07/30 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
动态加载js的几种方法
2006/10/23 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python二元赋值实用技巧解析
2019/10/25 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
python math模块的基本使用教程
2021/01/16 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
企业后勤岗位职责
2014/02/28 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
防汛通知
2015/04/25 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android