2

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 の量についてであるため、機能していないようです。すべてがうまくいくまでチェックし続ける方法は?

4

1 に答える 1

0

ここにあるコードは、オーバーラップを防ぐために一般的に機能するはずです (注意する必要がありますが、最悪の場合、クリップが大きすぎたり、ステージが小さすぎたりすると、このコードが無限にループする可能性があります)。

ただし、問題は、新しく作成されたMovieClip空のオブジェクトでこのコードを呼び出していることです。そのため、重複することはありません。おそらく、後でいくつかの子コンテンツをクリップに追加し、その時点でそれらが重なっていると思われます。したがって、修正は、クリップが重なっているかどうかを確認する前に、最初にクリップにデータを入力するか、クリップのサイズがわかっている場合は、呼び出す代わりにhitTestObject、クリップの位置が他のクリップに近すぎるかどうかを手動で確認することです。

于 2010-03-23T05:58:05.697 に答える