Javascript div和区域标记之间的冲突
我正在寻找检测div和区域标记之间碰撞的可能性。 有没有办法解决这个问题Javascript div和区域标记之间的冲突,javascript,html,area,Javascript,Html,Area,我正在寻找检测div和区域标记之间碰撞的可能性。 有没有办法解决这个问题 谢谢我不知道是否有一个官方的函数来做这件事,但是你可以使用它们的位置、宽度和高度自己写这个函数 例如: function collision(){ ret=false; if(area.posX > div.posX) and (area.posX < div.posX+div.Width)) if((area.posY > div.posY) and (area.posY <
谢谢我不知道是否有一个官方的函数来做这件事,但是你可以使用它们的位置、宽度和高度自己写这个函数 例如:
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;
函数冲突(){
ret=假;
if(area.posX>div.posX)和(area.posXdiv.posY)和(area.posYCOLLISON
ret=真;
if((area.posX+area.Width>div.posX)和(area.posX+area.Widthdiv.posY)和(area.posYCOLLISON
ret=真;
if(area.posX>div.posX)和(area.posXdiv.posY)和(area.posY+area.HeightCOLLISON
ret=真;
if((area.posX+area.Width>div.posX)和(area.posX+area.Widthdiv.posY)和(area.posY)
ret=真;
返回ret;
}
或
函数冲突(){
if((area.posX+area.Widthdiv.posX+div.Width)
||(面积posY+面积高度div.posY+高度)
)
返回false;
其他的
返回true;
}
没错,此函数需要一个矩形区域,但如果您想要多边形函数,可以使用以下解决方案:
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) )
|| ....
)
}
函数冲突(){
如果(
((area.posX1>div.posX)和(area.posX1div.posY)和(area.posY1div.posX)和(area.posX2div.posY)和(area.posY2
多边形的(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;
}
for(myPolygon中的var CurrentApex)
{
if((currentApex.posXdiv.posX.div.Width)
||(currentApex.posYdiv.posY.div.Height
)
返回false;
}
也许一个示例代码如何?计算两者的位置并进行比较这是我的问题,如何计算区域标记的位置?谢谢你的回答,在我看来,这个函数假设一个矩形区域,但有没有办法用多边形区域解决问题?谢谢,你让我开心了!:)
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;
}