0

我有一个 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 不起作用,因为在游戏最初开始时不会创建孩子。

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

4

1 回答 1

2

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

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

然后,您可以删除容器,这会将其所有子项从显示链中分离出来,只需调用removeChild(highScoreFields).

于 2012-12-23T18:07:55.927 回答