'.parent'的动态数量

时间:2010-08-25 07:59:12

标签: actionscript-3 loops parent-child

我有2个对象。在不同深度的MovieClip中。我想知道对象A父对象是否与对象B父对象相同。我想动态地将'.parent'添加到对象A / B,直到它们达到相同的级别(具有相同的父对象)。我怎么能这样做?

我的想法是拥有像

这样的东西
objectA = objectA + ".parent"

并使其循环直至到达目标。但这不是添加更多层'.parent'的正确方法。有人知道它应该如何编码吗?

2 个答案:

答案 0 :(得分:1)

您可以使用contains方法

  

public function contains(child:DisplayObject):Boolean
  确定指定的显示对象是DisplayObjectContainer实例的子项还是实例本身的子项。搜索包括整个显示列表,包括此DisplayObjectContainer实例,孙子,曾孙等。

function haveCommonParent(a:DisplayObject, b:DisplayObject):Boolean
{
  for(var p:DisplayObjectContainer = a.parent; p != null; p = p.parent)
  {
      if(p.contains(b))
          return true;
  }
  return false;
}

对于巨大的显示列表,可能会很慢。

更新:获取共同父母,如果有的话。如果两个对象都在舞台上,这将返回Stage个对象。

function getCommonParent(a:DisplayObject, b:DisplayObject):DisplayObjectContainer
{
  for(var p:DisplayObjectContainer = a.parent; p != null; p = p.parent)
  {
      if(p.contains(b))
          return p;
  }
  return null;
}

答案 1 :(得分:0)

var mc:MovieClip;
while (mc.parent != null && mc.parent != targetParent)
{
    mc = mc.parent;
}