打印

[AS3] 遍历MC中的子MC

小弟刚学AS3。遇到一个问题,我不会遍历舞台上MC内的子MC,上网搜到一个答案如下:
“因为AS3里深度是连续的。所以就先获得舞台的子级数,再用for就可以了getChildAt(深度),
for(var i:int=0;i<=numChildren-1;i++){
trace(getChildAt(i));
}”
可是我又不知道怎么获得子集数。各位帮忙解决下。我的情况是:舞台上有个map影片剪辑,map里面有color1-color8共8个子影片剪辑,我想在主场景时间轴上写代码,把8个子影片剪辑分别变换成不同颜色。变色的代码我会,就需要遍历的方法,谢谢各位了啊,我正在做一个电子地图,急用!在线等!
爬都不会就想跑了?

for(var i:int=0;i<=map.numChildren-1;i++){
trace(map.getChildAt(i));
}

回复 失忆的猪猪 在 2# 的帖子

我是因为工作需要啊,正在做一个东西,要求AS3.0,以后多向大家请教学习。还有个问题,就是color1-color8里面分别还有若干个子MC,怎么遍历他们啊,我这样写的,可是不对。
       for (var i:uint=0; i<map.numChildren; i++) {
              for (var j:uint=0;j<map.getChildAt(i).numChildren;j++){
              trace(map.getChildAt(i).getChildAt(j));
              }
       }帮我改改啊,谢谢大哥了!
for (var i:uint=0; i<map.numChildren; i++) {
    if(!  map.getChildAt(i) is Sprite){
         continue
    }
    for (var j:uint=0;j<map.getChildAt(i).numChildren;j++){
        trace(map.getChildAt(i).getChildAt(j));
    }
}

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
这是很基础的问题,如果这个没有搞清楚 就做项目很悬....

TOP

谢谢指点

你教训的对啊,我一定听进去,打好基础。我这次也是被逼的,赶鸭子上架啊,幸亏你的指点,不然没办法交差了。再次感谢,解决这个问题后,这个项目就差不多完成了。若还遇到困难,希望不要闲我麻烦,给我指点下。

TOP

还是不对啊

我照你的方法写了,可是还是不对啊,运行报错和没有
    if(!  map.getChildAt(i) is Sprite){
         continue;
    }
这个的时候是一样的。是不是我哪些地方疏忽了啊。

TOP

我想到办法了

我想了想,想到AS2.0也有这个问题:遍历场景中的MC跟简单,但是遍历MC中的MC就要加上_root[i]这么一句,我就试了试,结果对了,我是这么写的:
for (var i:uint=0; i<map.numChildren; i++) {
       var mm=map.getChildAt(i) as MovieClip;
    for (var j:uint=0;j<mm.numChildren;j++){
        trace(mm.getChildAt(j));
    }
}
这样就可以了,其实也是你写的代码提醒了我。谢谢你的耐心指点啊。终于可以安心了啊!!!!

TOP