PDA

Просмотр полной версии : Обращение к компоненту по текстовому id


spacecadet
20.01.2010, 12:18
Здравствуйте, всем!

И опять вопрос от начинающего "программиста" (в форуме поискал, но ответа так и не нашел). Предположим, есть у меня множество компонентов, например типа Label, которые я создаю динамически. При создании, им присвоены id-шники "lbl_1","lbl_2",...,"lbl_N". Как мне обратится к такому компоненту имя лишь текстовую строку, содержащую его id? (В Borland'овской реализации C++ и Delphi например есть функция FindComponent(name:string), которая возвращает ссылку на компонент с именем name, нужна такая же для Flex)

BeDLiNt
20.01.2010, 12:36
Можно, но криво и косо:
for (var i:Number = 0; i < 10; i++)
{
var label:Label = new Label();
label.id = "lbl_" + i;
label.text = "text" + i;
label.y = i*20;
this.addChild(label);
}

for each (var child:UIComponent in this.getChildren())
{
if (child.id == "lbl_1")
(child as Label).text = "New Label Text";
}
Куда правильнее хранить не id-шники ваших компонентов, а сразу ссылки на них. Тогда и искать ничего не прийдется.

spacecadet
20.01.2010, 14:40
А не подскажите как это сделать? :rolleyes:

BeDLiNt
20.01.2010, 15:04
Допустим, создать такой массив с ссылками на эти объекты:
var labelsArray:Array = [];

...

for (var i:Number = 0; i < 10; i++)
{
var label:Label = new Label();
label.text = "text" + i;
label.y = i*20;
this.addChild(label);
labelsArray.push(label);
}

(labelsArray[1] as Label).text = "New Label Text";

Всё зависит от того как в дальнейшем Вам будет удобнее работать с этими компонентами.

spacecadet
20.01.2010, 15:19
Восхитительно, спасибо Вам, BeDLiNt! Который раз мне уже помогаете!!! :) :) :) :yahoo:

BeDLiNt
20.01.2010, 15:25
spacecadet: Пожалуйста)