随机位置没有重叠

时间:2010-03-23 04:48:29

标签: actionscript-3 random overlap

如何阻止MC互相重叠?

private function loadWishes():void {



for (i; i<myXMLList.length(); i++) {
    cBox=new MovieClip();
    checkOverlap(cBox);
    addChild(cBox);
    commentArray.push(cBox);

   }
  }
  private function checkOverlap(wishB:MovieClip) {
   wishB.x=Math.random()*stage.stageWidth;
   wishB.y=Math.random()*stage.stageHeight;
   for (var i:uint=0; i<commentArray.length; i++) {
    if (wishB.hitTestObject(commentArray[i])) {
     checkOverlap(wishB);
     return false;
    }
    trace(commentArray.length);
   }
  }

这似乎不起作用,因为它检查MC是否重叠的数量是关于舞台上MC的数量。怎么让它继续检查,直到一切都很好?

1 个答案:

答案 0 :(得分:0)

这里的代码应该通常用于防止重叠(尽管你应该小心 - 在最坏的情况下,如果剪辑太大或者舞台太小,这段代码可能无限循环。)

但是,您的问题是您在新创建的MovieClip对象上调用此代码,这些对象是空的 - 因此它们永远不会重叠。据推测,您稍后会将某些子内容添加到剪辑中,此时它们会重叠。所以修复一下,你应该首先填充剪辑,然后检查它们是否重叠,或者如果你知道剪辑的大小,那么你可以手动检查剪辑的位置是否过于接近而不是调用hitTestObject。到其他剪辑。