Форум 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=149278)

Mulin 21.01.2011 23:16

Перезагрузка цикла XML
 
Мувкилипы циклом загружаются из библиотеки. Цикл формируется узлами XML. Количество узлов = количеству мувиклипов. На каждом мувиклипе есть кнопка удалающая узел из XML, и перегружающая цикл. Трейс говорит что количество узлов после операции уменьшилось, но количество мувиклипов остается прежним. Скажем, если у меня 10 узлов, то и 10 мувиклипов с содержимым узлов сформируется. Если нажать на кнопку удалить в 7 мувиклипах, то трейс myXml.firstChild.childNodes.length покажет 3, но количество мувиклипов не уменьшится. Цикл запускается заново каждый раз после нажатия кнопки "удалить. "Причем судя по всему цикл действительно обновляется, ибо инфа на мувиклипах меняется в соответствии с уделением. Как мне кажется все дело в том, что старый цикл остается. Есть ли какой нить способ очистить цикл? Причем хоть я и удаляю узел из dataXML, но если трейсить оригинальный XMLfile, то все равно количество узлов покажет уменьшенное, что странно

Код AS1/AS2:

var XMLfile:XML = new XML();
XMLfile.load("videos.xml");
XMLfile.ignoreWhite = true;
XMLfile.onLoad = zagr;
 
var dataXML:XML = XMLfile;
function zagr()
{
            trace(dataXML.firstChild.childNodes.length);//показывает дейсствительное количество узлов
                vsego = dataXML.firstChild.childNodes.length;
                for (var i:Number = 0; i < vsego; i++) {//цикл формирует кнопку "Удалить"
                        full[i] = dataXML.firstChild.childNodes[i].childNodes[3].firstChild.nodeValue;
                        var delite_btn:MovieClip = Scrol_mc.vidthumbs_mc2.attachMovie("delite_btn", "Scrol_mc" + i, i);
                        delite_btn.ID = i;
                        delite_btn._x = 235;
                        delite_btn._y = i * 65 + 5;
                        delite_btn.onRelease = function() {//функция удаляет узел с тем же ID что и кнопка
                                dataXML.firstChild.childNodes[this.ID].removeNode();
                                zagr();//обновляем цикл
                        };
                        //цикл формирует Мувиклип на котором расположена кнопка "Удалить"
                        var Mediablock:MovieClip = Scrol_mc.vidthumbs_mc.attachMovie("Mediablock", "Scrol_mc" + i, i);
                        Mediablock.ID = i;
                        Mediablock.full_txt.text = full[i];
                        Mediablock.playicon_mc._visible = false;
                        Mediablock._y = i * 65;
                        };
                }
                Scrol_mc.scrollInfo();

Добавлено через 55 минут
И вдогонку еще один вопрос. Измененный таким образом XML? я отправляю php скрипту, который его перезаписывает. но проблема вся в том, что флаг XMLfile.ignoreWhite = true отправляет файл без табуляции, сплошной строкой, что криво и не удобно. Но если убрать флаг, то разумеется xml не распарсивается. Вот и что теперь делать? Пробывал создавать переменную которой присваивал копию этого xml и этой переменной ставил флаг XMLfile.ignoreWhite = false, не спасало, в таком случае не распарсивало XML/

Hauts 05.02.2011 11:55

Попробуйте не привязываться к хмл. То есть загрузили, распарсили и создали объект data с нужными полями, как в хмл-е было. Потом с этим объектом и работайте, у него удаляйте/меняйте поля и т.п., не трогая хмл, который загрузили.

А когда вам нужно будет сохранить — просто в цикле формируйте текстовые данные, перебирая поля у этого объекта и получая строки, как в хмл-е, со всеми табуляциями и т.п.

Вот примерно так:

Код AS1/AS2:

var saveXMLData:String = "<xml>"
var totalNodes:Number = data.videos.length;
 
for(var k:Number = 0; k< totalNodes; k++){
    saveXMLData += "\n\t<video id='" + data.videos[k].id + "' src='" + data.videos[k].src + "' />"
}
 
saveXMLData += "</xml>" // получили хмл-ку, которую можем сохранить



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

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