JS實現(xiàn)判斷碰撞的方法
本文實例講述了JS實現(xiàn)判斷碰撞的方法。分享給大家供大家參考。具體如下:
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]);
}
示例如下:
<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程序設計有所幫助。
- JS/HTML5游戲常用算法之碰撞檢測 包圍盒檢測算法詳解【圓形情況】
- JS/HTML5游戲常用算法之碰撞檢測 像素檢測算法實例詳解
- JS/HTML5游戲常用算法之碰撞檢測 地圖格子算法實例詳解
- javascript制作游戲開發(fā)碰撞檢測的封裝代碼
- js實現(xiàn)碰撞檢測特效代碼分享
- JS實現(xiàn)小球的彈性碰撞效果
- JS實現(xiàn)碰撞檢測的方法分析
- 原生JS實現(xiàn)的碰撞檢測功能示例
- JS/HTML5游戲常用算法之追蹤算法實例詳解
- Javascript和HTML5利用canvas構(gòu)建Web五子棋游戲?qū)崿F(xiàn)算法
- JS/HTML5游戲常用算法之碰撞檢測 包圍盒檢測算法詳解【矩形情況】
相關文章
js實現(xiàn)一維數(shù)組轉(zhuǎn)化為二維數(shù)組兩種簡單方法
在日常開發(fā)中我們可能會遇到返回的數(shù)據(jù)不能直接使用,而數(shù)據(jù)提供者只給你傳遞二維數(shù)據(jù)格式的數(shù)據(jù),這個時候就需要我們做轉(zhuǎn)換,這篇文章主要給大家介紹了關于js實現(xiàn)一維數(shù)組轉(zhuǎn)化為二維數(shù)組的兩種簡單方法,需要的朋友可以參考下2023-12-12JavaScript中SetInterval與setTimeout的用法詳解
在寫H5游戲時經(jīng)常需要使用定時刷新頁面實現(xiàn)動畫效果,比較常用即setTimeout()以及setInterval(),但是大家對SetInterval與setTimeout的用法了解嗎,下面通過本文給大家詳解js中SetInterval與setTimeout的用法,需要的朋友參考下2015-11-11javascript css在IE和Firefox中區(qū)別分析
我們討論的主題CSS網(wǎng)頁布局,最令大家頭疼的問題就是瀏覽器兼容性,雖然52CSS.com介紹過很多這方向的知識,但依然讓很多開發(fā)人員暈頭轉(zhuǎn)向,今天的這篇文章,將列出css和javascript在IE和Firefox中二十三個不同點,希望對大家的學習有所幫助。2009-02-02