Actionscript 3 AS3-获取按钮实例名称和路径

Actionscript 3 AS3-获取按钮实例名称和路径,actionscript-3,Actionscript 3,如何跟踪单击的“section1.btnback” section1.btnback.addEventListener(MouseEvent.CLICK, getBack) function getBack(event:MouseEvent):void { // trace: "section1.btnback" } 谢谢。 Uli我猜你想让它这样说: 每次按下按钮时,控制台是否会显示“已单击按钮!” 跟踪(“单击了Section1.btnback!”) 我相

如何跟踪单击的“section1.btnback”

section1.btnback.addEventListener(MouseEvent.CLICK, getBack)

    function getBack(event:MouseEvent):void
    {
    // trace: "section1.btnback"
    }
谢谢。
Uli

我猜你想让它这样说: 每次按下按钮时,控制台是否会显示“已单击按钮!”

跟踪(“单击了Section1.btnback!”)

我相信。 (不太确定你要的是什么)

-在下面的评论中展开-

如果你想要像meddlingwithfire在他对3lionz答案的评论中建议的那样的“完整路径”,那么你可以使用我创建的类来为你实现它。该类称为DOPath(显示对象路径的缩写)。以下是用于获取显示对象完整路径的示例:

Main.as(文档类):

DOPath.as

package com.example.display 
{
    import flash.display.DisplayObject;
    import flash.display.DisplayObjectContainer;
    import flash.display.Stage;

    public class DOPath
    {
        private var _parents:Vector.<DisplayObjectContainer>;
        private var _d:DisplayObject;

        public function DOPath(d:DisplayObject):void
        {
            _d = d;

            init();

        }// end function

        private function init():void
        {
            _parents = new Vector.<DisplayObjectContainer>;

            pushParent(_d);

        }// end function

        private function pushParent(d:DisplayObject):void
        {
            if(d.parent) 
            {
                _parents.push(d.parent);
                pushParent(d.parent);

            }// end if

        }// end function

        public function toString():String
        {
            var path:String = _d.name;

            for (var i:uint = 0; i < _parents.length; i++)
            {
                var name:String = (_parents[i] is Stage) ? "stage" : _parents[i].name;
                path = name + "." + path;

            }// end for

            return path;

        }// end function

    }// end class

}// end package
package com.example.display
{
导入flash.display.DisplayObject;
导入flash.display.DisplayObjectContainer;
导入flash.display.Stage;
公共类DOPath
{
私有变量父对象:向量。;
私有变量:DisplayObject;
公共函数DOPath(d:DisplayObject):void
{
_d=d;
init();
}//端函数
私有函数init():void
{
_父向量=新向量。;
家长(d),;
}//端函数
私有函数pushParent(d:DisplayObject):void
{
如果(d.父母)
{
_父母。推(d。父母);
父母(d.parent);
}//如果结束
}//端函数
公共函数toString():字符串
{
变量路径:String=\u d.name;
对于(变量i:uint=0;i<\u parents.length;i++)
{
变量名称:String=(_parents[i]是Stage)?“Stage”:_parents[i]。名称;
路径=名称+“+”路径;
}//结束
返回路径;
}//端函数
}//末级
}//端包

我不确定你到底想要什么。如果我的建议不适合你,请原谅。如果你写信

 trace(event.target)

您将看到按钮实例的完整名称。

您可以使用一个非常简单的递归函数,如下所示:

private function getDOname(dob : DisplayObject) : String
{
    var result : String = dob.name;

    if (dob is UIComponent)
    {
        result = UIComponent(dob).id;
    }

    if(dob.parent && dob.parent is DisplayObjectContainer)
    {
        result = getDOname(dob.parent) + "." + result;
    }

    return result;
}

您可以将
event.target
传递给函数并获取单击的按钮。如果您使用这些技术进行调试,那么如果您不确定实际单击的是哪个可视元素,您可以简单地将click event的事件侦听器添加到stage或SandboxRoot本身

我正在寻找这样的东西:trace(event.currentTarget.name)-问题是,这只会给我“btnback”-但我需要按钮的完整路径。请尝试此处:或此处:您是否询问将显示列表作为“完整路径”获取?
private function getDOname(dob : DisplayObject) : String
{
    var result : String = dob.name;

    if (dob is UIComponent)
    {
        result = UIComponent(dob).id;
    }

    if(dob.parent && dob.parent is DisplayObjectContainer)
    {
        result = getDOname(dob.parent) + "." + result;
    }

    return result;
}