如何跟踪点击“section1.btnback”?
section1.btnback.addEventListener(MouseEvent.CLICK, getBack)
function getBack(event:MouseEvent):void
{
// trace: "section1.btnback"
}
感谢。 乌利
答案 0 :(得分:1)
我不确定你要求的是什么。如果我的建议不适合你,请原谅。如果你写
trace(event.target)
您将看到按钮实例的完整名称。
答案 1 :(得分:0)
我猜你想要它说: “按钮被点击了!”每次按下按钮时控制台?
trace(“单击了Section1.btnback!”);
我相信。 (真的不确定你要的是什么)
- 在下面的评论中扩展 -
答案 2 :(得分:0)
如果你想在3lionz的答案评论中提到像meddlingwithfire这样的“完整路径”,那么你可以使用我为你创建的课程。该类称为DOPath(显示对象路径的缩写)。以下是用于获取显示对象的完整路径的示例:
Main.as (文档类):
package
{
import com.example.display.DOPath;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var container1:Sprite = new Sprite();
container1.name = "container1";
var container2:Sprite = new Sprite();
container2.name = "container2";
var square:Square = new Square();
square.name = "square";
square.addEventListener(MouseEvent.CLICK, onSquareClick);
addChild(container1);
container1.addChild(container2);
container2.addChild(square);
}// end function
private function onSquareClick(e:MouseEvent):void
{
var square:Square = e.target as Square;
var doPath:DOPath = new DOPath(square);
trace(doPath); // output: stage.root1.container1.container2.square
}// end function
}// end package
}// end package
import flash.display.Sprite;
internal class Square extends Sprite
{
public function Square()
{
graphics.beginFill(0xFF0000);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
}// end function
}// end class
<强> 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
答案 3 :(得分:0)
您可以使用一个非常简单的递归函数,如下所示:
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
传递给该功能并获取已点击的按钮。如果您正在使用这些技术进行调试,则只需向舞台或SandboxRoot本身添加和事件侦听器,如果您不确定实际单击的是哪个视觉元素。