"section1.btnback"을 (를) 클릭 한 방법을 추적하려면 어떻게해야합니까?AS3 - 버튼 인스턴스 이름 및 경로 얻기
section1.btnback.addEventListener(MouseEvent.CLICK, getBack)
function getBack(event:MouseEvent):void
{
// trace: "section1.btnback"
}
감사합니다. Uli
"section1.btnback"을 (를) 클릭 한 방법을 추적하려면 어떻게해야합니까?AS3 - 버튼 인스턴스 이름 및 경로 얻기
section1.btnback.addEventListener(MouseEvent.CLICK, getBack)
function getBack(event:MouseEvent):void
{
// trace: "section1.btnback"
}
감사합니다. Uli
나는 당신이 무엇을 요구하고 있는지 확실하지 않습니다. 제 제안이 당신에게 옳지 않다면, 제발 저를 용서해주십시오. 작성하는 경우
trace(event.target)
버튼의 인스턴스 이름이 표시됩니다. 당신은 이와 같은 아주 간단한 재귀 기능을 사용할 수 있습니다
나는 다음과 같이 말하고 싶습니다. "버튼을 클릭했습니다!" 버튼을 누를 때마다 콘솔에?
trace ("Section1.btnback was clicked!");
나는 믿습니다. 는 meddlingwithfire이 3lionz의 대답에 자신의 의견에 제안처럼 당신이 "전체 경로를"원하는 경우에 당신이 사용할 수
below- 의견
-Expanded (당신을 요구하고 있었는지 정말 확실하지 않았다) 나는 그것이 당신을 위해 그것을 만든 클래스. 이 클래스는 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
를 그것의 예는 디스플레이 오브젝트의 전체 경로를 얻기 위해 사용되는 다음의
:
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에 추가하기 만하면됩니다.
다음과 같은 것을 찾고 있습니다 : ** trace (event.currentTarget.name) ** - 문제는이 것이 "btnback"만 제공한다는 것입니다. 그러나 버튼의 전체 경로가 필요합니다. – Uli
여기에서 시도하십시오 : http://www.actionscript.org/forums/showthread.php3?t=142581 또는 여기 : http://stackoverflow.com/questions/4680323/help-me-to-find-out-the- object-path-in-flash – 3lionz
표시 목록을 "전체 경로"로 지정 하시겠습니까? – meddlingwithfire