как я могу пройти через детей класса UIComponent в flex - PullRequest
0 голосов
/ 04 марта 2011

Я динамически создаю компонент пользовательского интерфейса на основе шаблонов XML, хранящихся в базе данных. Теперь я хочу получить доступ к одному из дочерних компонентов этого класса UIComponent. Я не вижу детей в этом классе? Как я мог пройти через каждый дочерний компонент этого класса и установить его свойства в соответствии с некоторой логикой в ​​коде (что я не мог сделать в самих шаблонах).

В основном я хочу сделать что-то вроде этого:

var cover:UICoomponent = generateScreen()
for each(var obj:UIComponent in cover.children){
if (obj.id =="myComponent"){
 obj.SomProperty = "SomeValue";
 }
}

Любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

3 голосов
/ 04 марта 2011

Использование numChildren:

var cover:UICoomponent = generateScreen()
for (var i:int = 0; i < cover.numChildren; i++)
{
    var obj:UIComposer = cover.getChildAt(i) as UIComponent;
    if (obj.id =="myComponent") {
        obj.SomProperty = "SomeValue";
    }
}

Обновление: рекурсивный обход

function findChild(childId:String,container:DisplayObjectContainer=null):UIComponent
{
   container ||= this;
   for (var i:int = 0; i < container.numChildren; i++)
   {
      var obj:UIComponent = container.getChildAt(i) as UIComponent;
      if (obj.id == childId)
         return obj;
      if (obj is DisplayObjectContainer)
      {
         // search for children
         child = findChild(childId,obj as DispalyObjectContainer);
         if (child)
            return child;
       }
    }
}

Использование:

var child:UIComponent = findChild("myComponent");
child.someProperty="SomeValue";

У меня есть 'Я скомпилировал это, но вы получили общее представление.

...