2011-11-03 67 views
0

这是我第一次在动作中使用递归,所以我确信有些东西我没有考虑到。 我想要做的只是迭代阶段的孩子,并追查孩子是什么和索引。这是一些代码。以递归方式获取as3中的所有儿童,孙子等舞台

public function recurseStage(dOC:DisplayObjectContainer) 
    { 
     var numCh = dOC.numChildren; 
     for(var i = 0; i < numCh; i++) 
     { 
      var child = dOC.getChildAt(i); 
      trace("child: " + child + " at i: " + i); 

      if(child.numChildren > 0) 
      { 
       recurseStage(child); 
      } 
     } 
    } 

问题区域似乎是最后实际的recurseStage()调用。以及之前的if语句。我知道不是所有的孩子都会拥有财产。但是我不确定要使用什么。这应该是一个简单的解决方法,但我的大脑现在没有帮助我。 此外,如果有比这更好的方式请让我知道。提前致谢。

回答

2

使用
if (child is DisplayObjectContainer && child.numChildren > 0)

,而不是

if(child.numChildren > 0)

+0

谢谢!那样做了。我曾经自己尝试过每一种,但由于某种原因,并没有尝试这两种方法。再次感谢。 – James

+0

@詹姆斯,接受这个,如果它帮助你 –

+3

对不起,让我等了几分钟才能够接受。 – James