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 '行 4954 错误: 不支持该属性或方法' 的问题解决方法
Jan 19 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
js键盘上下左右键怎么触发function(实例讲解)
Dec 14 Javascript
jQuery选择器源码解读(三):tokenize方法
Mar 31 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
Aug 04 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
Nov 06 Javascript
Vue源码学习之初始化模块init.js解析
Nov 02 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 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/06/13 PHP
解析php中memcache的应用
2013/06/18 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
Python requests接口测试实现代码
2020/09/08 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
优秀的导游求职信范文
2014/04/06 职场文书
补充协议书范本
2014/04/23 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
党小组意见范文
2015/06/08 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python