我有2个对象。在不同深度的MovieClip中。我想知道对象A父对象是否与对象B父对象相同。我想动态地将'.parent'添加到对象A / B,直到它们达到相同的级别(具有相同的父对象)。我怎么能这样做?
我的想法是拥有像
这样的东西objectA = objectA + ".parent"
并使其循环直至到达目标。但这不是添加更多层'.parent'的正确方法。有人知道它应该如何编码吗?
答案 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;
}