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 に答える