Изменение текста с помощью AS3 в цикле for - работает для первого, другие - нет - PullRequest
0 голосов
/ 10 октября 2011

У меня есть мувиклип с именем Tab, в котором есть два текстовых поля: с именем toptxt и bottomtxt. Когда я создаю новые экземпляры Tab в цикле for и изменяю текст, изменяется только текст первого экземпляра. Остальной текст по умолчанию в мувиклипе.

Вот код, который я использую:

for(var i = 0; i < 5; i++){
    var newTab = new Tab();
    newTab.toptxt.text = nameArray[i]; //nameArray is fine
    trace(newTab.toptxt.text); //returns expected value, textfield isn't
    newTab.bottomtxt.text = jobs[i];
    bottom.addChild(newTab); //bottom is a class var.
    newTab.x = i * (newTab.width + 3);
}

Даже если я изменю nameArray [i] на «Test», будет работать только первый.

Эта проблема не возникает, если я не делаю это для циклов, однако я хотел бы сделать это для цикла.

Вот скриншот проблемы: http://i.imgur.com/hgPZ5.png

1 Ответ

1 голос
/ 10 октября 2011

Вытащите ваше объявление var newTab = new Tab(); из цикла for, чтобы ваш код выглядел следующим образом:

 var newTab:Tab;
 for(var i:int = 0; i < 5; i++){
    newTab = new Tab();
    newTab.toptxt.text = nameArray[i]; //nameArray is fine
    trace(newTab.toptxt.text); //returns expected value, textfield isn't
    newTab.bottomtxt.text = jobs[i];
    bottom.addChild(newTab); //bottom is a class var.
    newTab.x = i * (newTab.width + 3);
}

Actionscript становится запутанным, когда вы создаете экземпляр и назначаете newTab в качестве указателя на него,вместо того, чтобы сначала создать указатель или ссылку, а затем создать новые экземпляры и добавить их в свой displayList.

Кроме того, проследите ваши выходные данные nameArray [i] и убедитесь, что эти значения верны (т. Е. trace(nameArray[i]);. Возможно, данные ранее не были правильно установлены в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...