首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在actionscript-3中循环遍历孩子

在actionscript-3中循环遍历孩子
EN

Stack Overflow用户
提问于 2009-08-06 18:45:30
回答 4查看 14.6K关注 0票数 3

在as3中,如何遍历DisplayObjectContainer中的所有childs?我想要这样的语法:

代码语言:javascript
复制
for each(var displayObject:DisplayObject in displayObjectContainer )
{
    displayObject.x += 10;
    displayObject.y += 10;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-06 19:00:09

不确定for each是否有效,但这是有效的。

代码语言:javascript
复制
for (var i:int = 0; i<myObj.numChildren; i++)
{
    trace(myObj.getChildAt(i));
}
票数 13
EN

Stack Overflow用户

发布于 2009-08-06 19:01:25

也许是这样的东西?

代码语言:javascript
复制
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;
}   

然后

代码语言:javascript
复制
for each (var child:Array in getChildren(displayObjectContainer)) {
    //....
}

问候

back2dos

票数 2
EN

Stack Overflow用户

发布于 2009-08-09 12:36:08

您可以使用下面的递归函数来遍历任何DisplayObjectContainer类的所有子类。

代码语言:javascript
复制
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树完全相同的分层方式显示所有子对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1240678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档