3

我现在正在开发一款 AS3 游戏,并对其进行设置,以便玩家精灵可以收集硬币。这是通过在检测到与玩家发生碰撞时使“硬币”影片剪辑不可见并将硬币计数加一来完成的。

现在,我有以下循环。

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

我不想为每个单独的硬币电影剪辑和硬币收集布尔值设置其中一个,但是我无法找到将它们全部放入 for 循环的方法。有没有办法在 for 循环中将变量与增量值连接起来?提前致谢,如果这是一个愚蠢的问题,我很抱歉。

4

1 回答 1

3

我想你正在寻找level['coin' + i]. i = 5例如,当等价于level.coin5。为了避免两次收集同一枚硬币,为什么不检查它的可见性呢?

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 回答