我正在寻找检测div和区域标签之间碰撞的可能性。 有没有办法解决这个问题?
由于
答案 0 :(得分:0)
我不知道是否有官方功能可以这样做,但你可以自己编写这个功能,使用他们的位置和他们的宽度和高度......
例如:
function collision(){
ret=false;
if(area.posX > div.posX) and (area.posX < div.posX+div.Width))
if((area.posY > div.posY) and (area.posY < div.posY+div.Height))
//left top corner is into the div --> COLLISON
ret=true;
if((area.posX+area.Width > div.posX) and (area.posX+area.Width < div.posX+div.Width))
if((area.posY > div.posY) and (area.posY < div.posY+div.Height))
//Right top corner is into the div --> COLLISON
ret=true;
if(area.posX > div.posX) and (area.posX < div.posX+div.Width))
if((area.posY+area.Height > div.posY) and (area.posY+area.Height < div.posY+div.Height))
//left bottom corner is into the div --> COLLISON
ret=true;
if((area.posX+area.Width > div.posX) and (area.posX+area.Width < div.posX+div.Width))
if((area.posY+area.Height > div.posY) and (area.posY <+area.Height div.posY+div.Height))
//Right bottom corner is into the div --> COLLISON
ret=true;
return ret;
}
或
function collision(){
if( (area.posX+area.Width < div.posX)
|| (area.posX > div.posX+div.Width)
|| (area.posY+area.Height< div.posY)
|| (area.posY > div.posY+Height)
)
return false;
else
return true;
}
答案 1 :(得分:0)
你是对的,这个函数需要一个矩形区域,但是如果你想要一个多边形的函数,你可以解决这个问题:
function Collision(){
if(
( (area.posX1 > div.posX) and (area.posX1 < div.posX+div.Width) and (area.posY1 > div.posY) and (area.posY1 < div.posY+div.Height) )
|| ( (area.posX2 > div.posX) and (area.posX2 < div.posX2+div.Width) and (area.posY2 > div.posY) and (area.posY2 < div.posY+div.Height) )
|| ....
)
}
用(posX1,posY1)多边形的第一个坐标, 和(posX2,posY2)多边形的秒坐标, ... ...
如果你想要一个全局函数,你可以为你的多边形赋一个函数的参数,并使用一个foreach循环来测试多边形的当前顶点是否不在div中并返回以打破循环的结束(在javascript,foreach用于(列表中的var元素){...} //
for (var CurrentApex in myPolygon)
{
if( (currentApex.posX < div.posX)
|| (currentApex.posX > div.posX.div.Width)
|| (currentApex.posY < div.posY)
|| (currentApex.posY > div.posY.div.Height
)
return false;
}