как узнать полный путь объекта в actionscipt3 - PullRequest
0 голосов
/ 12 января 2011

Как узнать целевой путь мувиклипа или текстового поля. ??мне нужно получить полный путь к мувиклипу, например Object(root).moviclip1.movieclip2.textfield

Ответы [ 4 ]

1 голос
/ 13 января 2011

Мне кажется, я понимаю, что вы ищете, и я написал небольшую функцию, которая выполняет это. Это довольно уродливо, но должно сработать.

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;
}

Вы даете ему начальное местоположение пути для поиска (это или этап, в зависимости от того, где вы заканчиваете, вы сверляете для пути) и путь в строке.

Так, например, предположим, что у меня есть mc с именем "a" на этом, а внутри "a" есть mc с именем "b", вы не можете получить его с этим ["ab"], а скорее с этим [ "а"] [ "б"]. Используя эту функцию, вы можете сделать:

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

Я не проверял это со слишком большим количеством типов входов, поэтому я не уверен, что в некоторых обстоятельствах он не будет прерываться или зацикливаться.

1 голос
/ 12 января 2011

ты имел в виду, как это?

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);

    }
1 голос
/ 12 января 2011

Я совершенно уверен, что нет ни одного свойства или метода, который мог бы дать вам это.Вы можете перебирать дерево списка отображения в поисках вашей цели.Но это может быть большой цикл в зависимости от того, сколько у вас графики

0 голосов
/ 13 января 2011

Возможно, это не то, что вы хотите услышать, но, похоже, вы пытаетесь сделать что-то в стиле ActionScript 2.

Возможно, вы захотите узнать больше в ООП (объектно-ориентированное программирование). Он будет казаться очень инопланетным и, как будто он действительно работает против вас, но когда проекты становятся больше, это очень помогает.

имена мувиклипов больше не являются именами свойств родителя. Боюсь, что если вы будете делать то, что, я думаю, вы пытаетесь получить, чтобы имена свойств проходили через дерево мувиклипов, это не сработало бы, вы бы увидели что-то вроде

stage.instance2.instance15.instance45.instance90;

, который, как вы можете догадаться, мало чем поможет.

...