Actionscript 3 AS3-获取按钮实例名称和路径
如何跟踪单击的“section1.btnback”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.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;
}