Arrays 试图区分数组中的对象
我在一个函数中区分数组中的对象时遇到问题。 我创造了一个可以容纳8个敌人的阵法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 =
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
}
}