2013-07-25 4 views
0

Я искал, как я могу это сделать, и ничего не работает. Пытается использовать i в цикле, чтобы ссылаться на все мои текстовые поля и устанавливать их. Пусть мои текстовые поля называются textField0, textField1, поля 2 и т.д. Что-то вроде:ссылаясь на текстовые поля in for loop

for(var i:int = 0; i < numberOfFields; i++) 
{ 
    parent.child.getChildByName("textField" + i).text = stringArray[i]; 
} 

Любая помощь будет высоко ценится Спасибо

+0

У вас есть ошибка при выполнении этого или только не работают? –

ответ

0

Давайте предположим, что ваша иерархия выглядит следующим образом

0: root:MainTimeline ¬ 
    0: Background:Shape 
    1: textField1:TextField 
    2: textField2:TextField 
    3: myClip:MovieClip 
    4: textField3:TextField 

У нас есть некоторый «шум» в списке, поэтому простая итерация по всем этим может быть не лучшим образом. Мы могли бы и поместить оператор if, который проверяет имя объекта или его тип объекта, или мы могли бы создать ручной список указателей для каждого из этих текстовых полей. В этом сценарии каждое текстовое поле может гипотетически существовать в любом вложенном контейнере. Это зависит от того, что вы создали.

В примере вы дали выше, вы ссылку объект буквально называется «ребенок», что будет означать вашу иерархию может выглядеть следующим образом ...

0: root:MainTimeline ¬ 
    0: child:MovieClip ¬ 
     0: textField1:TextField 
     1: textField2:TextField 
     2: textField3:TextField 
    1: myClip:MovieClip // <- assuming that this is the class your code is coming from 

Таким образом, логика у вас есть то, что мы поднимаемся на уровень с неявной ссылкой this(), а затем вниз к нашему контейнеру с именем child и повторяем его дочерние элементы (примечание: я подозреваю, что это не тот случай, и часть причины его сбоя).

Предполагая ту же иерархию, я мог бы переписать это так:

for (var i:int = 0; i < parent.child.numChildren; i++) { 
    var txt:TextField = parent.child.getChildAt(i); 
    txt.text = stringArray[i]; 
} 
+0

Интересно, я еще не использовал getChildAt(). Мне все равно действительно нужно использовать getChildByName(), потому что у меня много текстовых полей на одном уровне. Я получаю 1118: Неявное принуждение значения со статическим типом flash.display: DisplayObject к возможно несвязанному типу flash.text: TextField при использовании getChildByName(). Любая причина, почему это было бы? – Adamund

+0

Создание этого TextField перед его настройкой. Спасибо! – Adamund