在AS3中连接变量名称

时间:2012-11-20 19:41:35

标签: actionscript-3 flash loops actionscript concatenation

我现在正在开发AS3游戏,并设置它以便玩家精灵可以收集硬币。这是通过在检测到与玩家发生碰撞时将'硬币'影片剪辑不可见,并将硬币计数增加1来完成的。

现在,我有以下循环。

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

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

1 个答案:

答案 0 :(得分: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类