2012-03-14 40 views
0

有沒有辦法讓我點擊的movieClip的路徑?AS3在mouseClick上查找MC路徑?

例如event.currentTarget.path? (這不工作,但我想類似的東西!)

感謝

+0

你是什麼意思路徑:

stage.addEventListener(MouseEvent.MOUSE_DOWN , mouseHandler); public function mouseHandler(e:MouseEvent):void { var object:DisplayObject = e.target as DisplayObject; var path:String = object.name ; while(object != e.target.root){ object = object.parent; path = object.name + "." + path; trace(object); }; trace("stage."+path); }; 

要使用此功能路徑IM得到的DisplayObject? – grapefrukt 2012-03-14 08:28:54

+0

你可以編寫一個遞歸函數來檢查event.CurrentTarget是否有父項並將其附加到列表/路徑。不過,如果能方便地命名DisplayObject,否則它會有點棘手,除非你知道圍繞項目@grapefrukt的方式,我認爲他意味着從顯示列表頂部到被點擊的影片剪輯的路徑 – 2012-03-14 08:33:53

+0

@GeorgeProfenza - 是的,我是指從顯示列表的頂部。這可能嗎?似乎應該很容易,但找不到方法 – user1203605 2012-03-14 08:51:42

回答

2

所以你想通過名稱來獲得路徑:]

在這裏你有工作版本,之前我寫的唯一的想法。 link to github

+0

我喜歡通過名字獲得路徑嗎?是的,你能提出一個更好的方法嗎? (當然,你是示例作品。) – user1203605 2012-03-15 09:21:15

+0

我認爲沒有比這更好的方法。您只能循環訪問父對象並獲取其名稱或深度。 – turbosqel 2012-03-15 09:28:28

1

如果路徑你的意思是一個DisplayObject的路徑的顯示列表的字符串表示你可以使用遞歸構建路徑字符串像下面這樣:

package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite 
    { 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      var sprite1:Sprite = new Sprite(); 
      sprite1.name = "sprite1"; 
      var sprite2:Sprite = new Sprite(); 
      sprite2.name = "sprite2"; 
      var sprite3:Sprite = new Sprite(); 
      sprite3.name = "sprite3"; 

      stage.addChild(sprite1); 
      sprite1.addChild(sprite2); 
      sprite2.addChild(sprite3); 

      trace(getPath(sprite3)); 

     } 

     private function getPath(displayObject:DisplayObject):String 
     { 
      var path:String = ""; 

      var name:String = (displayObject != stage) 
       ? displayObject.name : "stage"; 

      path += name + "."; 

      if (displayObject.parent) 
      { 
       path = getPath(displayObject.parent) + path; 

      } 

      return path; 

     }// end function 

    }// end class 

}// end package