こんにちは、私は AS3 を初めて使用します。ある時点で子を削除する最善の方法は何かと考えていました。私は試した
Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]);
ただし、ArgumentError: エラー #2025: 提供された DisplayObject は呼び出し元の子である必要があります。
助言がありますか?
こんにちは、私は AS3 を初めて使用します。ある時点で子を削除する最善の方法は何かと考えていました。私は試した
Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]);
ただし、ArgumentError: エラー #2025: 提供された DisplayObject は呼び出し元の子である必要があります。
助言がありますか?
Patricks バージョンが動作しない理由がわかりません。これは、クリップの親を使用した代替の (醜いコード) ソリューションです。
var clips : Array = _container.getObjectsUnderPoint(_point);
for each(var clip : DisplayObject in clips)
{
clip.parent.removeChild(clip);
}
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 も返すため、何もフィルタリングしません...私の間違いです!