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实现的一个导航滚动效果具体代码
May 27 Javascript
Node.js中npm常用命令大全
Jun 09 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
Sep 20 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 Javascript
node.js文件操作系统实例详解
Nov 05 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 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
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
php简单中奖算法(实例)
2017/08/15 PHP
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
python获得图片base64编码示例
2014/01/16 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
django 简单实现登录验证给你
2019/11/06 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
《草原的早晨》教学反思
2014/04/08 职场文书
团队拓展活动总结
2014/08/27 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
环保建议书范文
2015/09/14 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
初中政治教师教学反思
2016/02/23 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python