通过每一个组件实例递归迭代递归、组件、实例、迭代

由网友(三分温柔七分坚强)分享简介:我在我的Flex应用程序不同的自定义组件实例。我要循环通过他们递归,并得到他们的实例ID。递归部分对我来说很重要。谁能告诉我什么是做到这一点的最好方法是什么?我曾尝试这样做,但它没有这样做递归的:每个(VAR myItem:*在this.MasterContainer.childDescriptors){跟踪(m...

我在我的Flex应用程序不同的自定义组件实例。我要循环通过他们递归,并得到他们的实例ID。递归部分对我来说很重要。 谁能告诉我什么是做到这一点的最好方法是什么? 我曾尝试这样做,但它没有这样做递归的:

 每个(VAR myItem:*在this.MasterContainer.childDescriptors)
{
   跟踪(myItem.id);
}
 

解决方案

这将做到这一点:

 私有函数findControlsRecursive(电流的DisplayObjectContainer,控制:ArrayCollection的):无效
{
对于(VAR IDX:= 0; IDX< current.numChildren; IDX ++)
{
VAR孩子:的DisplayObject = current.getChildAt(IDX);
controls.addItem(child.name);
VAR childContainer:级DisplayObjectContainer =小孩为的DisplayObjectContainer;
如果(childContainer)
{
findControlsRecursive(childContainer,控制);
}
}
}

公共职能findControls()的ArrayCollection
{
VAR控制:ArrayCollection的=新ArrayCollection的();
findControlsRecursive(Application.application为的DisplayObjectContainer,控制);
返回控制;
}
 
递归和迭代的对比 qq 40893595的博客 CSDN博客 递归迭代内存

I have various custom component instances in my flex app. I want to loop through them recursively and get their instance Ids. The recursive part is very important to me. Can someone tell me what's the best way to do it? I have tried doing this, but it didn't do recursive:

for each (var myItem:* in this.MasterContainer.childDescriptors)
{
   trace(myItem.id);
}

解决方案

This will do it:

private function findControlsRecursive(current:DisplayObjectContainer, controls:ArrayCollection):void
{
	for(var idx:int = 0; idx < current.numChildren; idx++)
	{
		var child:DisplayObject = current.getChildAt(idx);
		controls.addItem(child.name);
		var childContainer:DisplayObjectContainer = child as DisplayObjectContainer;
		if(childContainer)
		{
			findControlsRecursive(childContainer, controls);
		}
	} 
}

public function findControls():ArrayCollection
{
	var controls:ArrayCollection = new ArrayCollection();
	findControlsRecursive(Application.application as DisplayObjectContainer, controls);
	return controls;
}

阅读全文

相关推荐

最新文章