Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript div和区域标记之间的冲突_Javascript_Html_Area - Fatal编程技术网

Javascript 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 <

我正在寻找检测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 < 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;
    }