0

こんにちは、私は AS3 を初めて使用します。ある時点で子を削除する最善の方法は何かと考えていました。私は試した

Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]);

ただし、ArgumentError: エラー #2025: 提供された DisplayObject は呼び出し元の子である必要があります。

助言がありますか?

4

2 に答える 2

0

Patricks バージョンが動作しない理由がわかりません。これは、クリップの親を使用した代替の (醜いコード) ソリューションです。

var clips : Array =  _container.getObjectsUnderPoint(_point);

for each(var clip : DisplayObject in clips)
{
    clip.parent.removeChild(clip);
}
于 2010-12-14T08:38:04.443 に答える
0

getObjectsUnderPoint() メソッドは、必ずしも Holder オブジェクトの直接の子であるとは限らない DisplayObject の配列を返します。それらは、孫の子または孫の孫などである可能性があります...

次のような条件を設定できます。

var objects:Array =  Holder.getObjectsUnderPoint( yourPoint );
for each( var child:DisplayObject in objects )
{
    if( child.parent == Holder )
       Holder.removeChild( child ) ;
}

Holder.contains は、grandChildren も返すため、何もフィルタリングしません...私の間違いです!

于 2010-12-14T04:20:28.593 に答える