js碰撞检测函数的封装

news/2024/7/19 14:08:20 标签: js, 碰撞检测

主要运用的getBoundingRect()方法,这个方法的详细解释下面有

function getRect(obj){
		return obj.getBoundingClientRect();
	}
function collision(obj1,obj2){
	var obj1Rect = 	getRect(obj1);
	var obj2Rect = 	getRect(obj2);

	//如果obj1碰上了哦obj2返回true,否则放回false
	var obj1Left = obj1Rect.left;
	var obj1Right = obj1Rect.right;
	var obj1Top = obj1Rect.top;
	var obj1Bottom = obj1Rect.bottom;

	var obj2Left = obj2Rect.left;
	var obj2Right = obj2Rect.right;
	var obj2Top = obj2Rect.top;
	var obj2Bottom = obj2Rect.bottom;

	if( obj1Right < obj2Left || obj1Left > obj2Right || obj1Bottom < obj2Top || obj1Top > obj2Bottom ){
		return false;
	}else{
		return true;
	}
}
这个封装函数中主要运用到的是getBoundingClientRect()方法,但这个方法有兼容性问题。下面就是这个方法的用法以及兼容性处理

 这个方法返回一个矩形对象,包含四个属性:left、top、right和bottom。分别表示元素各边与页面上边和左边的距离。

var box=document.getElementById('box');         // 获取元素

alert(box.getBoundingClientRect().top);         // 元素上边距离页面上边的距离

alert(box.getBoundingClientRect().right);       // 元素右边距离页面左边的距离

alert(box.getBoundingClientRect().bottom);      // 元素下边距离页面上边的距离

alert(box.getBoundingClientRect().left);        // 元素左边距离页面左边的距离

 

注意:IE、Firefox3+、Opera9.5、Chrome、Safari支持,在IE中,默认坐标从(2,2)开始计算,导致最终距离比其他浏览器多出两个像素,我们需要做个兼容。

document.documentElement.clientTop;  // 非IE为0,IE为2

document.documentElement.clientLeft; // 非IE为0,IE为2

functiongGetRect (element) {

    var rect = element.getBoundingClientRect();

    var top = document.documentElement.clientTop;

    var left= document.documentElement.clientLeft;

    return{

        top    :   rect.top - top,

        bottom :   rect.bottom - top,

        left   :   rect.left - left,

        right  :   rect.right - left

    }

}



http://www.niftyadmin.cn/n/952230.html

相关文章

转:xml的读写

1&#xff09; XML是一项热门的技术。它之所以能够引起人们的兴趣&#xff0c;一个主要的原因在于它十分的简单&#xff0c;人们可以很容易地理解和使用它。每一个程序员都能轻易地看懂一个XML文件&#xff0c;理解它包含的内容。 .NET中包含了很多支持XML的类&#xff0c;这些…

原生js实现QQ邮箱邮件拖拽删除功能

步骤分析&#xff1a; 根据数据结构生成HTML结构全选和单选功能的实现&#xff0c;以及当其为选中状态时它的父级的颜色变化的点击删除&#xff0c;删除结构同时删除数据给每一个li绑定mousedown&#xff0c;tip显示&#xff0c;并且定位在鼠标位置鼠标移动时&#xff0c;tip跟…

python opencv图像二值化大律算法_opencv python 图像二值化/简单阈值化/大津阈值法...

pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像&#xff0c;它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal&#xff0c;它表示如果像素值大于&#xff08;有时小于&#xff09;阈值则要给出的值. OpenCV提供不同类型…

转载:js技巧收集(200多个)

1.文本框焦点问题onBlur:当失去输入焦点后产生该事件onFocus:当输入获得焦点后&#xff0c;产生该文件Onchange:当文字值改变时&#xff0c;产生该事件Onselect:当文字加亮后&#xff0c;产生该文件 <input type"text" value"郭强" οnfοcus"if(v…

python pandas 官网_Pandas 最详细教程

Python 是开源的&#xff0c;它很棒&#xff0c;但是也无法避免开源的一些固有问题&#xff1a;很多包都在做&#xff08;或者在尝试做&#xff09;同样的事情。如果你是 Python 新手&#xff0c;那么你很难知道某个特定任务的最佳包是哪个&#xff0c;你需要有经验的人告诉你。…

雅虎前端优化的35条军规

摘要&#xff1a;无论是在工作中&#xff0c;还是在面试中&#xff0c;web前端性能的优化都是很重要的&#xff0c;那么我们进行优化需要从哪些方面入手呢&#xff1f;可以遵循雅虎的前端优化34条军规&#xff0c;不过现在已经是35条了&#xff0c;所以可以说是雅虎前端优化的3…

python怎么打出长下划线_python长的下划线怎么打

python中下划线使用键盘上的Shift减号键即可打出&#xff0c;减号键位于0和加号键之间。 在Python中下划线还具有 private 和 protected 类似的访问权限作用&#xff0c;下面我们具体分析。Python主要存在四种命名&#xff1a; &#xff08;1&#xff09;object #公用方法 &…

转载:xml 相关的类XmlTextReader ,XmlDocument

本文介绍3个XML的基本应用实例&#xff0c;旨在带领你快速步入XML编程世界。实例包括&#xff1a;在.NET中使用XML、读取XML文件&#xff0c;插入数据到XML文档中。 在.NET中使用XML 如果使用过MSXML3&#xff0c;那么在.NET应用程序中使用XML将是一个相当简单的过程。即时没有…