AS3 найти путь MC на mouseClick? - PullRequest
0 голосов
/ 14 марта 2012

Есть ли способ получить путь к мувиклипу, который я нажимаю?

например. event.currentTarget.path? (Это не работает, но я бы хотел что-то подобное!)

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Итак, вы хотели бы получить путь по именам:]

Здесь у вас есть рабочая версия, прежде чем я напишу только идею.

stage.addEventListener(MouseEvent.MOUSE_DOWN , mouseHandler);

public function mouseHandler(e:MouseEvent):void {
    var object:DisplayObject = e.target as DisplayObject;
    var path:String = object.name ;
    while(object != e.target.root){
            object = object.parent;
            path = object.name + "." + path;
            trace(object);
    };
    trace("stage."+path);
};

Чтобы получить DisplayObject по пути im, используя эту функцию: ссылка на github

1 голос
/ 14 марта 2012

Если под путем вы подразумеваете строковое представление пути отображаемого объекта в списке отображения, вы можете использовать рекурсию для построения строки пути, как показано ниже:

package 
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var sprite1:Sprite = new Sprite();
            sprite1.name = "sprite1";
            var sprite2:Sprite = new Sprite();
            sprite2.name = "sprite2";
            var sprite3:Sprite = new Sprite();
            sprite3.name = "sprite3";

            stage.addChild(sprite1);
            sprite1.addChild(sprite2);
            sprite2.addChild(sprite3);

            trace(getPath(sprite3));

        }

        private function getPath(displayObject:DisplayObject):String
        {
            var path:String = "";

            var name:String = (displayObject != stage) 
                ? displayObject.name : "stage";

            path += name + ".";

            if (displayObject.parent)
            {
                path = getPath(displayObject.parent) + path;

            }

            return path;

        }// end function

    }// end class

}// end package
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...