zoukankan      html  css  js  c++  java
  • 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]);
    }

    demo:

    <!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; 200px; height:200px; z-index:999}
    	#f2{position:absolute; background:#FFFF00; top:0px; left:0px; 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>

  • 相关阅读:
    Ruby 操作 Mysql (2)
    有关SQL模糊查询【转载】
    vim命令行大全【转载】
    Ruby连接MySQL
    c# 操作mysql
    sublime 3 快捷键大全
    VS2010快捷键大全
    [使用Xpath对XML进行模糊查询]
    vim永久显示行号
    Ubuntu16.04LTS安装flash player
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715153.html
Copyright © 2011-2022 走看看