"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)
が表示されます。ボタンのインスタンスの完全な名前が表示されます。あなたはこのような非常に単純な再帰関数を使用することができます
あなたはそれが次のようなことを言いたいと推測しています: "ボタンをクリックしました!"ボタンを押すたびにコンソールに入るのですか?
トレース( "Section1.btnback was clicked!");
私は信じています。 -Expandedがmeddlingwithfireが3lionzの答えの彼のコメントで提案されているようにあなたが「完全なパスを」したい場合は、あなたが使用することができます
below-コメントで
(あなたが求めていたものを実際に確認されませんでした)私はあなたのためにそれを行うクラスを作成しました。クラスは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