当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

actionscript 3-动态量“.parent”

admin 123℃
我有两个目标。在电影的不同深度。我想知道对象A父对象是否与对象B父对象相同。我想动态地将'.parent'添加到对象a/b,直到它都达到相同的级别(具有相同的父对象)。我该怎么做?

我的想法是有一些像

objectA = objectA + ".parent"

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

您可以使用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;
}
var mc:MovieClip;
while (mc.parent != null && mc.parent != targetParent)
{
    mc = mc.parent;
}

转载请注明:我的代码 » actionscript 3-动态量“.parent”