2011-01-12 32 views

回答

1

我相当确定没有一个属性或方法可以给你这个。您可以遍历显示列表树,搜索您的目标。但这可能是一个大循环取决于你有多少图形

+0

currentTarget?也许? – boring

+0

@ jase21 no..currentTarget – Akhil

1

你是不是这个意思?

addEventListener(MouseEvent.CLICK, targetMC); 
    function targetMC(ev:Event):void 
    { 
     var curinstance = ev.target.valueOf();//object 
     var targ:Object = curinstance.parent; 
     var path= curinstance; 
     do 
     { 
      if (targ is Stage) 
      { 
       path = targ + "." + path; 
      } 
      else 
      { 
       path = targ + "." + path; 
      } 

      targ = targ.parent; 
     } 

    trace(path); 

    } 
+0

你忘了结束循环.. while(targ!= null)... – Roy

+0

@Roy是的,我忘记了,你得到的路径吗?你可以给该对象的属性/方法? – Akhil

+0

addEventListener(MouseEvent.CLICK,targetMC); function targetMC(ev:Event):void { \t var curinstance = ev.target.valueOf(); // object \t var targ:Object = curinstance.parent; \t var path = curinstance; \t做 \t { \t \t如果(TARG是阶段) \t \t { \t \t \t路径= TARG +”。“+路径; \t \t} \t \t别的 \t \t { \t \t \t路径= TARG +”“+路径; \t \t} \t \t TARG = targ.parent; \t}而(TARG != null); \t \t //this[path].x = 100; \t trace(path); } this [“teg5”]。appendText(“this is sting to obj”); – Akhil

0

这可能不是你想听到什么,但似乎你正在尝试做的事情的ActionScript 2的风格。

您可能希望阅读更多关于OOP(面向对象编程)的内容。 它看起来很像外星人,喜欢它实际上对你不利,但是当项目变得更大时,它会有很大的帮助。

movieclip的名称不再是父级的属性名称。我担心如果你想做我认为你正在尝试做的事情,让它们的名字穿过动画片段树,那么它就行不通,你会看到类似于

stage.instance2.instance15.instance45.instance90;

正如你可以猜测,没有多大帮助。

+0

其实我正在处理键盘互动,以便有这么多形式封闭textfields.When我单击或专注于任何/每个文本字段键盘出现,并与该键盘我可以键入。但问题是,当我单击一个文本字段我想获取该textfield.even的targtpath当我将焦点更改为另一个文本字段时,我也必须在该文本字段上键入。窗体中有很多文本字段。这里是获取目标路径/显示对象的代码路径中的字符串..我需要将此路径转换为对象,我想给该对象的属性。 – Akhil

+0

啊,我前段时间做了这样的事情。 我做了什么是扩展flash.text.TextField与“my.text.TextField”和有一个静态Singleton类的KeyboardStatic,并在焦点/点击它会发送一个直接引用KeyboardStatic,它将激活键盘和键盘,并开始发送密钥... 如果你不能/不希望做一个扩展的TextField类,也许在KeyboardStatic上有一个公共静态函数,注册键盘并添加点击/焦点事件,但这会涉及到你进入我们的代码/ movieclips,并做 – WORMSS

+0

KeyboardStatic.register(_tfTextField1); KeyboardStatic.register(_tfTextField2); – WORMSS

1

我想我明白你在找什么,我写了一个小功能来完成这个功能。这是非常丑陋的,但应该做的伎俩。

function getChildFromPath(base:DisplayObjectContainer, path:String):DisplayObject 
{ 
    var pathAsArr:Array = path.split("."); 
    if (pathAsArr.length) 
    { 
     var newBase:DisplayObjectContainer = base.getChildByName(pathAsArr.shift() as String) as DisplayObjectContainer; 
     if (newBase) 
      return getChildFromPath(newBase, pathAsArr.join(".")); 
     else 
      return null; 
    } 
    return base; 
} 

你给它一个路径的起始位置看在(这一点,或阶段,这取决于你在哪里结束,你正在钻探的路径),并在字符串中的路径。例如,假设我有一个名为“a”的mc,而在“a”里面有一个名为“b”的mc,你不能用这个[“ab”]得到它,而是用这[ “一个”] [ “b”]。使用此功能 ,你可以这样做:

var path:String = "a.b"; 
var mc:DisplayObject = getChildFromPath(this, path); 

我没有太多类型的输入检查,所以我不知道它会不会在某些情况下破坏或永远循环下去。

相关问题