2009-08-06 7 views
3

DisplayObjectContainer内のすべての子をas3でどのようにループしますか?私はこのような構文をしたい:actionscript-3の子をループする

for each(var displayObject:DisplayObject in displayObjectContainer) 
{ 
    displayObject.x += 10; 
    displayObject.y += 10; 
} 

答えて

11

それぞれが動作するかどうかわからないが、これは動作します。

for (var i:int = 0; i<myObj.numChildren; i++) 
{ 
    trace(myObj.getChildAt(i)); 
} 
2

このようなものがありますか?

function getChildren(target:DisplayObjectContainer):Array { 
    var count:uint = target.numChildren; 
    var ret:Array = []; 
    for (var i:int = 0; i < count; i++) 
     ret.push(target.getChildAt(0)); 
    return ret; 
} 

、その後

for each (var child:Array in getChildren(displayObjectContainer)) { 
    //.... 
} 

greetz

back2dos

1

あなたはどのDisplayObjectContainerクラスのすべての子を反復処理するには、以下の再帰関数を使用することができます。

function getChildren(dsObject:DisplayObjectContainer, iDepth:int = 0):void 
{ 
    var i:int = 0; 
    var sDummyTabs:String = ""; 
    var dsoChild:DisplayObject; 

    for (i ; i < iDepth ; i++) 
     sDummyTabs += "\t"; 

    trace(sDummyTabs + dsObject); 

    for (i = 0; i < dsObject.numChildren ; ++i) 
    { 
     dsoChild = dsObject.getChildAt(i); 
     if (dsoChild is DisplayObjectContainer && 0 < DisplayObjectContainer(dsoChild).numChildren) 
      getChildren(dsoChild as DisplayObjectContainer,++iDepth); 
     else 
      trace(sDummyTabs + "\t" + dsoChild); 
    } 
} 

すべての子をDisplayListツリーと同様に階層的に表示します。

0

私の2セントです。

public static function traceDisplayList(displayObject:DisplayObject, maxDepth:int = 100, skipClass:Class = null, levelSpace:String = " ", currentDepth:int = 0):void 
    { 
     if (skipClass != null) if (displayObject is skipClass) return; 
     trace(levelSpace + displayObject.name); // or any function that clean instance name 
     if (displayObject is DisplayObjectContainer && currentDepth < maxDepth) 
     {  
      for (var i:int = 0; i < DisplayObjectContainer(displayObject).numChildren; i++) 
      { 
       traceDisplayList(DisplayObjectContainer(displayObject).getChildAt(i), maxDepth, skipClass, levelSpace + " ", currentDepth + 1); 
      } 
     } 
    } 
+0

OPが尋ねた内容に関しては、少し複雑すぎます。 – Florent

関連する問題