www.adobeshow.com

遍历场景中的显示对象

<Category: 未分类> 查看评论

写了一个遍历显示对象的类

TraversalChildAsArray.as

package

{
        import flash.display.DisplayObject;
        import flash.display.DisplayObjectContainer;
        /**
        * @author Danil
        */
        public class TraversalChild

        {
                //遍历所有显示对象并保存到数组
                static public function TraversalChildAsArray(sp:DisplayObjectContainer):Array
                {
                        var arr_sp:Array = [];
                        var c:int = sp.numChildren;
                        var i:int = 0;
                        while (i < c)
                        {
                                var sp_tmp:DisplayObject = sp.getChildAt(i);                              
                                arr_sp.push(sp_tmp);                               
                                var sp_con:DisplayObjectContainer = sp_tmp as DisplayObjectContainer;
                                if (sp_con)
                                {
                                        arr_sp = arr_sp.concat(TraversalChildAsArray(sp_con));
                                }

                                i++;
                        }
                        return arr_sp;
                }

        }
}

使用方法:
传入你想遍历所有子对象的显示对象,返回一个数组里面包含所有该显示对象的子对象,可以用for each遍历数组来访问。

var arr:Array = TraversalChild.TraversalChildAsArray(this);  //这里传入显示对象
trace(arr.length)
for each(var dis:DisplayObject in arr)
{
        //在这里访问dis即可
}

本文来自: 遍历场景中的显示对象

发表评论