如何在actionscript中找出对象的完整路径

时间:2011-01-12 05:50:08

标签: actionscript-3 actionscript flash-cs5

如何找出动画片段或文本字段的目标路径。 我需要获得像Object(root).moviclip1.movieclip2.textfield

这样的动画片段的完整路径

4 个答案:

答案 0 :(得分:1)

我很确定没有一种属性或方法可以帮助你。您可以遍历displaylist树,搜索您的目标。但这可能是一个很大的循环,取决于你有多少图形

答案 1 :(得分:1)

你的意思是这样吗?

addEventListener(MouseEvent.CLICK, targetMC);
    function targetMC(ev:Event):void
    {
        var curinstance = ev.target.valueOf();//object
        var targ:Object = curinstance.parent;
        var path= curinstance;
        do
        {
            if (targ is Stage)
            {
                path = targ + "." + path;
            }
            else
            {
                path = targ + "." + path;
            }

            targ = targ.parent;
        }

    trace(path);

    }

答案 2 :(得分:1)

我想我理解你在寻找什么,我写了一个小功能来完成它。这很丑陋,但应该这样做。

function getChildFromPath(base:DisplayObjectContainer, path:String):DisplayObject
{
    var pathAsArr:Array = path.split(".");
    if (pathAsArr.length)
    {
        var newBase:DisplayObjectContainer = base.getChildByName(pathAsArr.shift() as String) as DisplayObjectContainer;
        if (newBase)
            return getChildFromPath(newBase, pathAsArr.join("."));
        else
            return null;
    }
    return base;
}

你可以给它一个查看路径的起始位置(这个或阶段,取决于你为路径钻取的位置),以及字符串中的路径。

所以例如,假设我有一个名为“a”的mc,而在“a”里面有一个名为“b”的mc,你不能用这个[“ab”]得到它,而是用这个[ “一个”] [ “b”]。 使用此功能,您可以执行以下操作:

var path:String = "a.b";
var mc:DisplayObject = getChildFromPath(this, path);

我没有用太多类型的输入检查它,所以我不确定在某些情况下它不会破坏或永远循环。

答案 3 :(得分:0)

这可能不是你想听到的,但似乎你正在尝试使用Actionscript 2做事。

您可能希望更多地了解OOP(面向对象编程)。 它看起来非常外星,就像它实际上对你不利,但是当项目变得更大时,它会有很大的帮助。

动画片段的名称不再是父母的属性名称。我担心,如果你要做我认为你想做的事情,让属性名称遍历movieclip树,它就行不通,你会看到像

这样的东西

stage.instance2.instance15.instance45.instance90;

正如你所能猜到的那样无济于事。