Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сортировка XML (http://www.flasher.ru/forum/showthread.php?t=124788)

nOobCrafter 08.05.2009 16:35

Сортировка XML
 
День добрый, ситуация такова, есть список фильмов предствленный в виде 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); }  // тут мы отслеживаем конец какой то папки
        }
}

З.Ы. проблема решена, описка найдена, исправил код на будущее..


Часовой пояс GMT +4, время: 23:50.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.