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