3

私は現在AS3ゲームに取り組んでおり、プレイヤーのスプライトがコインを収集できるように設定しています。これは、プレーヤーとの衝突を検出したときに「コイン」ムービークリップを非表示にし、コインカウントを1つ増やすことによって行われます。

現在、次のループがあります。

if (coin1Collected == false){
  if (player.hitTestObject(level.coin1)){
    level.coin1.visible = false;
    coin1Collected = true;
    coinsCollected++;
    soundChannel = coinSound.play();
    }
}

個々のコインムービークリップとコイン収集ブール値ごとにこれらの1つを設定したくありませんが、それらすべてをforループに入れる方法を見つけることができませんでした。forループ内で変数を増分値と連結する方法はありますか?事前に感謝し、これが愚かな質問である場合は申し訳ありません。

4

1 に答える 1

3

を探していると思いますlevel['coin' + i]i = 5たとえば、 の場合は と同等ですlevel.coin5。また、同じコインを 2 回収集するのを避けるために、可視性をチェックしてみませんか?

const NUM_COINS = 10;

for (var i:int = 1; i < NUM_COINS; i++) {
    var coin:Sprite = level['coin' + String(i)];

    if (coin.visible && player.hitTestObject(coin)) {
        coin.visible = false;
        coinsCollected++;
        soundChannel = coinSound.play();
    }
}

コインに関する詳細情報を保存する必要がある場合は、次のことができます。

  • 配列を作成します。ここで、coinX はインデックス X に情報を持っています

  • MovieClip は動的であるため、MovieClip を使用して情報を属性として設定します ( coin.pickedUp = true) 。

  • その情報を属性としてすでに持っている Coin クラスを作成します

于 2012-11-20T19:46:12.477 に答える