Получение дескрипторов для динамически генерируемых компонентов Flex
-
19-09-2019 - |
Вопрос
У меня есть гибкое приложение, которое ссылается на отдельный файл MXML в качестве шаблона для пользовательского компонента.Я создаю экземпляры компонента динамически несколько раз в своей программе, но мне нужно получить дескриптор, который позволит мне изменять этот экземпляр компонента по желанию.
Я передаю определенную информацию этому компоненту при создании экземпляра, используя привязываемые общедоступные переменные в файле MXML компонента.Я добавляю его в свою основную программу с помощью addChild().
Я хочу обновить панель выполнения компонента по мере необходимости, и я хочу удалить ее из поля, в которое я ее добавил.
Каков самый простой / наилучший способ получить переменную, которая предоставит мне предсказуемый доступ к каждому компоненту, чтобы я мог легко манипулировать компонентами по мере необходимости?Некоторые исследования предполагают, что creationComplete завершен, но я решил, что быстрее просто спросить, чем проходить через множество различных экспериментов и ничего не получать.
Спасибо за всю помощь.:)
Решение
Разве вы не можете просто сохранить список ваших компонентов в виде массива?Предположительно, у вас есть ссылка на объект, когда вы их создаете и вызываете addChild() для их родительского элемента.Почему бы просто не поместить их в массив одновременно?
var list_of_controls:Array = new Array();
var new_Object:<yourType>;
new_Object = new <yourType>();
parent.addChild(new_Object);
list_of_controls.push(new_Object);
тогда вы сможете добраться до них...
var my_Object:<yourType>;
for each (my_Object in list_of_controls)
{
// do something
}
Вам нужно было бы убедиться, что вы правильно распорядились ими, когда закончите, потому что ссылка в вашем массиве сохранит их существование до тех пор, пока они не будут очищены.
Если вы решите, что хотите использовать getChildren() вместо этого - что вы могли бы - найдите время, чтобы прочитать документацию, потому что я думаю, что она возвращает новый массив при каждом вызове.
Я надеюсь, что это поможет.