写了一个遍历显示对象的类
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即可
}
本文来自: 遍历场景中的显示对象

发表评论