在数组中使用for循环问题

时间:2013-02-23 12:50:24

标签: actionscript-3 flash-cs5

最初,数组保持默认值为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 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分: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");
}

答案 2 :(得分: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");
}

答案 3 :(得分: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更改为Vector,因为它们效率更高,您可以指定元素的类型,但它也适用于array