У меня есть ArrayCollection, и каждый элемент является экземпляром класса TreeNode (созданного мной пользовательского класса), у которого есть свойство children, которое представляет собой ArrayCollection нескольких элементов TreeNode. Таким образом, у меня есть дерево элементов в структуре ArrayCollection:
tree = new ArrayCollection([
[new TreeNode(param1, param2, new ArrayCollection([
[new TreeNode(param1, param2, null)],
[new TreeNode(param1, param2, new ArrayCollection([
[new TreeNode(param1, param2, null)],
[new TreeNode(param1, param2, new ArrayCollection([
[new TreeNode(param1, param2, null)],
[new TreeNode(param1, param2, null)]
]))],
[new TreeNode(param1, param2, new ArrayCollection([
[new TreeNode(param1, param2, null)],
[new TreeNode(param1, param2, null)]
]))]
]))]
]))],
[new TreeNode(param1, param2, null)]
]);
Конструктор TreeNode имеет 3 параметра: первые два значения не имеют значения, но третье - это свойство children (ArrayCollection), и если TreeNode не имеет дочерних элементов, то для этого параметра должно быть установлено значение null. 1004 *
Я написал следующую функцию для рекурсивного синтаксического анализа структуры дерева:
private function parse(obj:Object):void {
for (var i:int = 0; i < obj.length; i++) {
if (obj[i] is TreeNode) {
if (obj[i].children != null) {
parse(obj[i].children);
}
} else {
parse(obj[i]);
}
}
}
parse(tree);
Но моя проблема в том, что мне нужно иметь ту же самую «древовидную» структуру (это не обязательно должна быть та же самая переменная), заполненная экземплярами другого класса. Как мне этого добиться?