Код очень хорошо иллюстрирует проблему, я отрезал все, что не связано.Как передать переменные новым детям? [flash AS3]
Создать 2-4 сородичей, когда начинается игра
function createInitialKinsmen()
{
for (var k:int = 1; k < 3 + Math.round(Math.random() * 2; k++)
{
if (k == 1)
{
createKinsmen(0);
trace ("player");
}
else
{
createKinsmen(1);
trace ("starting kinsmen");
}
}
}
функция создания родича
function createKinsmen(arrivalTypeVar:int)
{
var newKinsmen = new kinsmen;
listPanel.kinsmenDivider.addChild(newKinsmen);
totalKinsmen++;
totalKinsmenAlive++;
newKinsmen.name = "kinsmen" + totalKinsmen;
newKinsmen.arrivalType = arrivalTypeVar;
}
родича класс
public class kinsmen extends MovieClip
{
var arrivalType:int;
function kinsmen()
{
trace(this.name);
if (this.arrivalType = 0)
{
trace("player");
}
if (this.arrivalType = 1)
{
trace("starting kinsmen");
}
}
}
Вывод должен сказать:
kinsmen1
player
player
kinsmen2
starting kinsmen
starting kinsmen
kinsmen3
starting kinsmen
starting kinsmen
kinsmen4
starting kinsmen
starting kinsmen
Но вместо этого говорит:
kinsmen1
player
player
kinsmen2
player
starting kinsmen
kinsmen3
player
starting kinsmen
kinsmen4
player
starting kinsmen
Это означает, что arrivalType переменная не передается. Кажется, что жестко закодированные переменные могут быть переданы, хотя при этом у меня есть квадрат с альфой 0 внутри мувиклипа сородичей, и это позиция x определяет значение arrivalType в конструкторе, но это, безусловно, не может быть хорошей практикой , есть ли лучший способ сделать это?
тр y меняя '=' на '==' в ваших условиях – www0z0k
@ www0z0k хороший ловушка, это будет проблемой ... Я все еще думаю, что ему нужно передать аргументы своим конструкторам. Его логика конструктора выполняется, а затем он устанавливает переменные, от которых зависит логика. –