Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 试图区分数组中的对象_Arrays_Actionscript 3_Object_Flash Cs5 - Fatal编程技术网

Arrays 试图区分数组中的对象

Arrays 试图区分数组中的对象,arrays,actionscript-3,object,flash-cs5,Arrays,Actionscript 3,Object,Flash Cs5,我在一个函数中区分数组中的对象时遇到问题。 我创造了一个可以容纳8个敌人的阵法 enemy:Enemy; enemyArray:Array = []; for (i = 0; i < 8; i++) { enemy = new Enemy(); enemyArray.push(enemy); } 问题出在这里。玩家造成的伤害取决于敌人的元素,但是,它对所有敌人造成的伤害是相同的,可能是因为我在if语句中有enemyArray[j] var j:int; for (j =

我在一个函数中区分数组中的对象时遇到问题。 我创造了一个可以容纳8个敌人的阵法

enemy:Enemy;
enemyArray:Array = [];
for (i = 0; i < 8; i++)
{
    enemy = new Enemy();
    enemyArray.push(enemy);
}
问题出在这里。玩家造成的伤害取决于敌人的元素,但是,它对所有敌人造成的伤害是相同的,可能是因为我在if语句中有enemyArray[j]

var j:int;
for (j = 0; j < enemyArray.length; j++)
{
    if (enemyArray[j] != null)
    {
        trace(enemyArray[0].enemyElement, enemyArray[1].enemyElement)
        if (player.playerElement == "Electric")
        {
           if (enemyArray[j].enemyElement == "Water") 
               { 
                     //DO A LOT OF DAMAGE
                     damage = 20
               }
           else if (enemyArray[j].enemyElement == "Fire") 
               {
                      //DONT DO A LOT OF DAMAGE
                      damage = 10 
               }
        }
    }
}
var j:int;
对于(j=0;j

因此,如果我在屏幕上有两个敌人,一水一火,它将对这两个敌人造成相同的伤害。

你改变唯一的变量,名为
伤害,然后你依次将伤害分配给每个敌人,这就是为什么你对所有敌人造成相同的伤害。相反,你应该在你的循环中一次对一个敌人施加伤害

var j:int;
for (j = 0; j < enemyArray.length; j++)
{
if (enemyArray[j] != null)
{
    trace(enemyArray[0].enemyElement, enemyArray[1].enemyElement)
    if (player.playerElement == "Electric")
    {
       if (enemyArray[j].enemyElement == "Water") 
           { 
                 //DO A LOT OF DAMAGE
                 damage = 20
           }
       else if (enemyArray[j].enemyElement == "Fire") 
           {
                  //DONT DO A LOT OF DAMAGE
                  damage = 10 
           }
    }
    // put all the other elements of player&enemy in here
    enemyArray[j].takeDamage(damage); 
    // and then apply the calculated damage to only j'th enemy, not to every enemy
}
}
var j:int;
对于(j=0;j
谢谢您的回复。因此,当你说一次对一个敌人造成伤害时,我是否需要用实际数字替换j,如enemyArray[0]、enemyArray[1]等?不,你的
j
已经遍历了所有的数组。只是当你施加伤害时,你一次只改变一个物体,就在你计算了它需要承受的伤害之后。
var j:int;
for (j = 0; j < enemyArray.length; j++)
{
if (enemyArray[j] != null)
{
    trace(enemyArray[0].enemyElement, enemyArray[1].enemyElement)
    if (player.playerElement == "Electric")
    {
       if (enemyArray[j].enemyElement == "Water") 
           { 
                 //DO A LOT OF DAMAGE
                 damage = 20
           }
       else if (enemyArray[j].enemyElement == "Fire") 
           {
                  //DONT DO A LOT OF DAMAGE
                  damage = 10 
           }
    }
    // put all the other elements of player&enemy in here
    enemyArray[j].takeDamage(damage); 
    // and then apply the calculated damage to only j'th enemy, not to every enemy
}
}