День добрый, ситуация такова, есть список фильмов предствленный в виде XML (генерится пхп-скриптом и отдается флешу). Его структура такова:
папка -
- фильм
- фильм
папка с фильмами -
- фильм
- фильм
папка с фильмами -
папка с фильмами -
- фильм
- фильм
В общем пхп бегает по всем папкам что етсь и если находит там файлы нужного формата то записывает их. Степень вложенности может быть любой (используется рекурсия). Вопрос в том как сделать так что бы флеш отображал сначала только фильмы, а потом уже папки с другими фильмами (дабы несколько упорядочить это дело).
Решил сначала пробегаться по хмлюе и проверять, если фильм — то добавляем, если нет то пропускам, когда фильмы кончаются опять пробегаюсь по хмл и на этот раз проверяю папки, если нод - папка, запускаю функцию еще раз, если не то пропускаю.
НО проблема в том что папки второй вложенности и ниже не отображаются, почему то. Вот что я получаю в трейсе:
Цитата:
Films1 // большая папка с фильмами
Films1/In English // одна вложенная папка все ок
end of Films1/In English // вот конец этой папки
Films1/Multiki // еще одна вложенная папка с фильмами
end of Films1/Multiki // ее конец
Films1/New // и вот еще одна папка, но в ней есть еще вложенная папка
end of Films1/New/A_Beautiful_Mind // но мы видим только ее конец
end of Films1/New // .....
Films1/Video pricols
end of Films1/Video pricols/Animals
end of Films1/Video pricols/Beavis and Buthead
end of Films1/Video pricols/Crash
..........
|
Сортирую так:

Код AS1/AS2:
///////////////-------------- Обходим ХМЛ ---------------////////////////
function sort(node)
{
var total_i:Number = node.length;
for(var i:Number = 0; i < total_i; i++) // первый цикл - ищу фильмы
{
var nodes = node[i].childNodes;
if (typeof (nodes[0]) == "undefined") // если нету вложенных файлов то считаю что это фильм
{
//trace(node[i].attributes.film);
addElement(node[i].attributes.film, node[i].attributes.link, 12, 0x444444);
}
}
for(var i:Number = 0; i < total_i; i++) // второй цикл, обхожу папки
{
var nodes = node[i].childNodes; // надо так, а не как ниже закоменчено
if (typeof (nodes[0]) != "undefined") // елси етсь потомки то это папка
{
// var nodes = node[i].childNodes;
addFolder(node[i].attributes.name, 16, 0x333333);
trace(node[i].attributes.name);
sort(nodes); // если папка то запускаю эту функцию в ней
}
if (node[i].attributes.name != undefined){ trace("end of " + node[i].attributes.name); } // тут мы отслеживаем конец какой то папки
}
}
З.Ы. проблема решена, описка найдена, исправил код на будущее..