ActionScript 如何访问 child 精灵

ActionScript How to access child Sprites

我有以下问题。如果有人不厌其烦地回答,将不胜感激。

问题描述:我有一个顶级精灵"TopLevel", 下面有个雪碧"allRoutes", 下面有 child Sprite "Routes" 和 下面还有一个child "Route".

我想循环访问每个级别。我试过在 ActionScript 中这样做,但没有成功。

大概代码如下(未编译成功):

package 
{
    import flash.display.Sprite;

    public class TopLevel extends Sprite {
        public function TopLevel() {
            var allRoutes:Sprite = new Sprite();
            for (i = 0; i < 3; i++) {
                var routes:Sprite = new Sprite();
                for (j = 0; j < 4; j++) {
                    var route:Sprite = new Sprite();
                    route.name = "Route:" + i + ", " j;
                    routes.addChild(route);
                }
                routes.name = "Routes:" + i;
                allRoutes.name = "AllRoutes";
                allRoutes.addChild(routes);
            }
            addChild(allRoutes);

            trace (allRoutes.name);
            for (i = 0; i < allRoutes.numChildren; i++) {
                trace(allRoutes.getChildAt(i).name);
                for (j = 0; j < allRoutes.getChildAt(i).numChildren; j++) {
                    trace(allRoutes.getChildAt(i).getChildAt(j).name);
                }
            }
        }
    }
}

我期待以下结果:

所有路线

路线 1

1 号公路

1、2 号公路

1、3 号公路

1、4 号公路

路线 2

Route-2, 1

Route-2, 2

2、3 号公路

2、4号公路

等等..

希望你能明白这张照片。 非常感谢您。

感谢和问候

rr23850

在全球范围内,您的代码很好,除了一些小问题:

  • 您忘记声明 ij 变量:
var i:int, j:int;
  • 您忘记了此行中 j 之前的连接运算符:
route.name = "Route:" + i + ", " + j;
  • 如果您使用 strict mode 进行编译,这些指令将引发错误:
allRoutes.getChildAt(i).numChildren

allRoutes.getChildAt(i).getChildAt(j).name

在那种情况下可以是:

for (j = 0; j < Sprite(allRoutes.getChildAt(i)).numChildren; j++) 
{
    trace(Sprite(allRoutes.getChildAt(i)).getChildAt(j).name);
}

...

并且由于您的 for 循环从 0 开始,您将得到如下内容:

AllRoutes
Routes:0
Route:0, 0
Route:0, 1
Route:0, 2
Route:0, 3
Routes:1
Route:1, 0
Route:1, 1
...

希望能帮到你。