首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式访问DisplayObject的所有子对象?

如何以编程方式访问DisplayObject的所有子对象?
EN

Stack Overflow用户
提问于 2010-11-16 08:07:08
回答 3查看 4.4K关注 0票数 3

如何使用代码访问DisplayObject的所有子对象?(我正在寻找像movieclip.children这样的东西)

我在两种情况下使用它:

1)遍历并重新定位封闭的MovieClip的所有子对象。

2)遍历和删除MovieClip的所有子对象

此外,这是一个闪光CS5项目。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-16 08:12:03

这个循环将触动movieclip foo中的每一个孩子。我不确定您将对它们做什么,但是您可以在循环中运行您需要的任何方法。

代码语言:javascript
复制
for (var i:uint=0; i<foo.numChildren;i++){
    foo.getChildAt(i).whateverMethodYouNeed();
}
票数 6
EN

Stack Overflow用户

发布于 2010-11-16 08:16:06

你的对象只是一个显示对象吗?如果它是一个UIComponent,您可以使用getChildAt()和getChildByName()以及numChildren属性来遍历它们。这是flex项目的一部分还是只有actionscript项目的一部分?

DisplayObject本身没有描述其子对象的机制。了解子类的最低级别类型是DisplayObjectContainer。您可能必须将对象转换为至少一个DisplayObjectContainer,才能执行您想要的操作。不过,如果您有flex框架可以使用,我会选择UIComponent。

DisplayObject

DisplayObjectContainer

UIComponent

票数 0
EN

Stack Overflow用户

发布于 2010-11-16 09:52:41

如果你需要访问所有孩子,包括孩子的孩子,你可以尝试这样做:

代码语言:javascript
复制
    function doWhatever( mc:DisplayOjectContainer ):void
    {
          if( mc.numChildren > 0 )
             for( var i:int ; i < mc.numChildren ; ++i )
             {
                 //if you need to reposition
                //set the points properties here
                var point:Point = new Point( _x , _y );
                setPosition ( mc.getChildAt(i ) , point );

                //if you need to remove all children
                //do it recursively
                //remove( mc , mc.getChildAt( i );
             }
    }

    function setPosition(mc:DisplayObject , point:Point ):void
    {
        mc.x = point.x ;
        mc.y = point.y;
    }

    function remove(container:DisplayObjectContainer , child:DisplayObject ):void
    {
         //this will remove all children before being removed
         if( child is DisplayObjectContainer )
         {
             var doc:DisplayObjectContainer = child as DisplayObjectContainer;
             doWhatever( doc );
         }

         container.removeChild( child );
         child = null;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4190071

复制
相关文章

相似问题

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