2013-02-27 57 views
1

我該怎麼做?我一直在使用裝載機,然後嘗試從那裏獲取孩子,但是當SWF有4個孩子時,我只收到一個孩子。AS3如何從其他SWF獲取兒童

+0

你是什麼意思'GET'?你只是想在原始環境(內部SWF)中引用它們,還是想要提取它們,然後在外部SWF中重新使用它們? – Marty 2013-02-28 00:50:31

回答

1

試試這個:

package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.DisplayObjectContainer; 
    import flash.display.Loader; 
    import flash.display.LoaderInfo; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.net.URLRequest; 
    import flash.utils.getQualifiedClassName; 

    public class GetChildren extends Sprite 
    { 
     public function GetChildren() 
     { 
      var l : Loader = new Loader; 
      l.contentLoaderInfo.addEventListener(Event.COMPLETE, onSwfLoaded); 
      l.load(new URLRequest("http://staticns.ankama.com/dofus/www//game/items/src/1223.swf")); 
     } 

     protected function onSwfLoaded(event:Event):void 
     { 
      var result : Vector.<DisplayObject> = getChildren(LoaderInfo(event.target).content as DisplayObjectContainer); 
      trace("Children count : " + result.length); 
     } 

     private function getChildren(target : DisplayObjectContainer, inc : String = "", result : Vector.<DisplayObject> = null) : Vector.<DisplayObject> { 
      if(!result) 
       result = new Vector.<DisplayObject>; 

      for(var i : uint = 0; i < target.numChildren; ++i) 
      { 
       var child : DisplayObject = target.getChildAt(i); 
       result.push(child); 
       displayInfo(child, inc); 
       if(child is DisplayObjectContainer) 
        getChildren(child as DisplayObjectContainer, inc + " ", result); 
      } 

      return result; 
     } 

     private function displayInfo(target : DisplayObject, inc : String = "") : void 
     { 
      trace(inc + target.name +" : " + target + " (" + getQualifiedClassName(target).split("::").pop() + ")");    
     } 
    } 
} 

將輸出:

instance3 : [object Shape] (Shape) 
instance4 : [object MovieClip] (MovieClip) 
    instance5 : [object Shape] (Shape) 
instance6 : [object MovieClip] (MovieClip) 
    instance7 : [object Shape] (Shape) 
instance8 : [object MovieClip] (MovieClip) 
    instance9 : [object Shape] (Shape) 
instance10 : [object MovieClip] (MovieClip) 
    instance11 : [object Shape] (Shape) 
instance12 : [object Shape] (Shape) 
instance13 : [object MovieClip] (MovieClip) 
    instance14 : [object Shape] (Shape) 
instance15 : [object Shape] (Shape) 
instance16 : [object MovieClip] (MovieClip) 
    instance17 : [object Shape] (Shape) 
instance18 : [object Shape] (Shape) 
instance19 : [object MovieClip] (MovieClip) 
    instance20 : [object Shape] (Shape) 
instance21 : [object Shape] (Shape) 
instance22 : [object MovieClip] (MovieClip) 
    instance23 : [object Shape] (Shape) 
instance24 : [object Shape] (Shape) 
instance25 : [object Shape] (Shape) 
Children count : 23