0

嗨,我是 AS3 的新手,我想知道在某个时间点移除孩子的最佳方法是什么。我试过

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

但是返回的 ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子对象。

有什么建议么?

4

2 回答 2

0

getObjectsUnderPoint() 方法将返回一个 DisplayObjects 数组,它们可能不一定是您的 Holder 对象的直接子代,它们可能是孙子或孙子等...

您可以设置这样的条件:

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 回答
0

我不知道为什么帕特里克版本不起作用。这是使用剪辑父级的替代(丑陋代码)解决方案。

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

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