如何阻止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的数量。怎么让它继续检查,直到一切都很好?
答案 0 :(得分:0)
这里的代码应该通常用于防止重叠(尽管你应该小心 - 在最坏的情况下,如果剪辑太大或者舞台太小,这段代码可能无限循环。)
但是,您的问题是您在新创建的MovieClip
对象上调用此代码,这些对象是空的 - 因此它们永远不会重叠。据推测,您稍后会将某些子内容添加到剪辑中,此时它们会重叠。所以修复一下,你应该首先填充剪辑,然后检查它们是否重叠,或者如果你知道剪辑的大小,那么你可以手动检查剪辑的位置是否过于接近而不是调用hitTestObject
。到其他剪辑。