1

最初,该数组将默认值保存为 100。一旦敌人失去其生命值,那么我想将默认值从 100 设置为 0。当所有数组元素的值都为 0 时,该消息将跟踪为游戏获胜。

var enemyHealth:Array = new Array(100,100,100,100,0);

    for (var i = 0; i< enemyHealth.length; i++)
    {

        if (enemyHealth[i] == 0)
        {
            trace ("game win");
        }

    }

实际上,问题是如果数组元素中的任何一个的值为 0,那么它会在游戏获胜时跟踪按摩。

那么任何人都可以在这方面帮助我。

4

4 回答 4

1

我会做这样的事情

var enemyHealth:Array = new Array(100,100,100,100,0);

var isDead:Boolean = true;
for (var i = 0; i< enemyHealth.length; i++)
{

   if (enemyHealth[i] != 0)
   {
        isDead = false;
        break;
   }
}

if(isDead)
{
    trace ("Game Win");
}
于 2013-02-23T12:54:16.420 回答
1

您需要检查所有元素,而不仅仅是一个:

var allZero:Boolean = true;
var enemyHealth:Array = new Array(100,100,100,100,0);

for (var i = 0; i< enemyHealth.length; i++)
{

    if (enemyHealth[i] != 0)
    {
        allZero = false;
        break; // We know it's not a win, so we can stop the loop early
    }

}
if (allZero) {
    trace ("game win");
}
于 2013-02-23T12:54:33.067 回答
1

您可以执行其他回答者所说的或类似的操作,这可能会帮助您更多地获得确切数量的敌人死亡。

var enemyHealth:Array = new Array(100,100,100,100,0);
var enemiesDead:int=0;

    for (var i = 0; i< enemyHealth.length; i++)
    {

        if (enemyHealth[i] == 0)
        {
            enemiesDead++;
        }

    }

if(enemiesDead==enemyHealth.length)
{
    trace("Game Over");
}
于 2013-02-23T12:58:50.830 回答
1

您可以使用该every方法检查数组(或向量)的每个元素是否符合标准。

const enemyHealth:Vector.<uint> = new <uint>[100,100,100,100,0];

const zeroHealth:Function = function(item:uint, index:int, vector:Vector.<uint>):Boolean {
   return item === 0;
}

if (enemyHealth.every(zeroHealth)) {
    trace("Game win")
}

我已将 更改array为 aVector因为它们更有效,并且您可以指定元素的类型,但它也适用于array.

于 2013-02-23T13:34:38.040 回答