这是我用来绘制一些随机圆的代码的一部分:

if(circles.length != 0) { //1+ circles have already been drawn
  x = genX(radius);
  y = genY(radius);
  var i = 0;
  iCantThinkOfAGoodLabelName:
  for(i in circles) {
    var thisCircle = circles[i];
    if(Math.abs(x-thisCircle["x"])+Math.abs(y-thisCircle["y"])>radius*2) {
      //overlaps
    } else {
      //overlaps
      x = genX(radius);
      y = genY(radius);
      continue iCantThinkOfAGoodLabelName;
    }

    if(i == circles.length - 1) { //Last iteration
      //Draw circle, add to array
    }
  }
}


问题在于,当存在重叠时,不检查具有新生成的坐标的圆是否与已经检查了重叠圆的圆重叠。我已经尝试过在使用continue语句之前将i设置为0,但这没有用。请帮助,我真的很困惑。

最佳答案

You should not use for ... in on arrays.

请改用for(var i = 0; i < circles.length; ++i)。然后,可以通过设置i = 0进行重置。

09-25 20:17