Динамическое количество '.parent' - PullRequest
0 голосов
/ 25 августа 2010

У меня есть 2 объекта. В разных глубинах MovieClip. Я хотел бы знать, совпадает ли родительский объект A с родительским объектом B. Я хотел динамически добавить «.parent» к объекту A / B, пока он не достигнет одного и того же уровня (имея один и тот же родительский объект). Как я могу это сделать?

Моя идея состояла в том, чтобы иметь что-то вроде

objectA = objectA + ".parent"

и заставьте его зацикливаться, пока не достигнете цели. Но это не правильный способ добавить больше слоев «.parent». Кто-нибудь знает, как это должно быть закодировано?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Вы можете использовать содержит метод

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;
}
0 голосов
/ 25 августа 2010
var mc:MovieClip;
while (mc.parent != null && mc.parent != targetParent)
{
    mc = mc.parent;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...