AS3:从循环外部删除在for循环中创建的子级

时间:2012-12-23 17:54:01

标签: actionscript-3 function loops textfield

我有一个for循环,它从数组创建文本字段以表示高分。我的游戏中的每个级别都有一个单独的循环来执行此操作(这非常正常),这是一个示例:

// LEVEL 1 HIGH SCORES //
if (currentLevel==1) {
for (var k:int = 0; k < lvl1highScores.length; k++) //loop the length of the lvl 1 score array
{
var tf:HighScoreTF = new HighScoreTF();
tf.txt.text = lvl1highScores[k].player + " - " + lvl1highScores[k].score;
tf.y = k * 35; //sets distance between each high score text field
addChild(tf);
}
}

我想要做的是在用户点击高分图表后从视图中删除所有这些文本字段(tf)。这将从单独的函数到创建文本字段的函数完成。

使用removeChild不起作用,因为最初启动游戏时不会创建子项。

非常感谢所有帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

嗯,首先,为每个级别设置一个单独的for循环是一种糟糕的做法,所以你可能想重新考虑一下你是如何做到这一点的。但是,如果您真的只想要解决现有问题,只需为所有对象创建一个容器,然后删除容器。

var highScoreFields:Sprite = new Sprite();
if (currentLevel == 1) {
    // ...
    highScoreFields.addChild(tf);
    // ...
}
addChild(highScoreFields);

然后,您只需拨打removeChild(highScoreFields)即可删除容器,该容器会将所有子容器从显示链中分离。