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
在全球范围内,您的代码很好,除了一些小问题:
- 您忘记声明
i
和 j
变量:
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
...
希望能帮到你。
我有以下问题。如果有人不厌其烦地回答,将不胜感激。
问题描述:我有一个顶级精灵"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
在全球范围内,您的代码很好,除了一些小问题:
- 您忘记声明
i
和j
变量:
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 ...
希望能帮到你。