Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 1,2 > Вывод инфы из xml


Автор: StachelDraht 7.1.2009, 17:00
Привет!
Я тут немного запутался, надеюсь поможете.

Встала задача сделать вывод n количества кнопок и информации из xml документа.
Кнопки подгружаются, с этим более менее разобрался.
А вот при нажатии на кнопку в текстовом поле появляется undefined

Имеем:
xml документ catalog.xml
динамическое текстовое поле info
и немного кода
Код

<knopki>
    <object type="1">О фирме</object>
    <object type="1">Услуги</object>
    <object type="1">Цены</object>
    <object type="1">Контакт</object>
</knopki>
<info>
    <ofirme>Информация о нашей фирме</ofirme>
    <uslugi>Информация об услугах нашей фирмы</uslugi>
    <ceni>Информация о ценах</ceni>
</info>

Код

var nechto = new XML ();
nechto.ignoreWhite = 1;
nechto.load ("catalog.xml");
nechto.onLoad = function (success) {
    N=nechto.childNodes[0].childNodes.length;
    for (i=0; i<N; i++) {
        _root.attachMovie("figura", "f"+i, 100+i);
        _root["f"+i]._x=100;
        _root["f"+i]._y=100+25*i;
        _root["f"+i].gotoAndStop(nechto.childNodes[0].childNodes[i].attributes.type);
        if (nechto.childNodes[0].childNodes[i].attributes.type=="1"){
        _root["f"+i].faceLabel=nechto.childNodes[0].childNodes[i].lastChild.toString();
        
        L=nechto.childNodes[1].childNodes.length;
        //trace (L);
        _root["f"+i].onRelease = function () {
        info.text = nechto.childNodes[1].childNodes[i].lastChild.nodeValue;
            }

        }
    }
}


Спасибо!

Автор: Maksys 7.1.2009, 21:19
Во первых ошибка в XML
вот код который должен показать ошибку.
Код

var nechto = new XML ();
nechto.ignoreWhite = 1;
nechto.load ("catalog.xml");
nechto.onLoad = function (success) {
    trace(nechto);
    N=nechto.childNodes[0].childNodes.length;
    for (i=0; i<N; i++) {
        _root.attachMovie("figura", "f"+i, 100+i);
        _root["f"+i]._x=100;
        _root["f"+i]._y=100+25*i;
        _root["f"+i].gotoAndStop(nechto.childNodes[0].childNodes[i].attributes.type);
        if (nechto.childNodes[0].childNodes[i].attributes.type=="1"){
        _root["f"+i].faceLabel=nechto.childNodes[0].childNodes[i].lastChild.toString();
        
        L=nechto.childNodes[1].childNodes[i].nodeName;
        trace (L);
        _root["f"+i].onRelease = function () {
            info.text = nechto.childNodes[1].childNodes[i].nodeName;
            }
        }
   


И во вторых нельзя так создавать кнопки. Точно не помню решение этой задачи нужно поискать на форуме Flasher.ru. 
Знаю что не так все просто.

Автор: StachelDraht 7.1.2009, 21:36
Код

L=nechto.childNodes[1].childNodes[i].nodeName;
 trace (L);

выводит названия из xml файла, ошибки никакой не показал
ofirme
uslugi
ceni
contact


Добавлено @ 21:39
мне не понятно, почему здесь
Код

root["f"+i].faceLabel=nechto.childNodes[0].childNodes[i].lastChild.toString();

 я могу вытащить названия кнопок
а здесь инфу в раздел не могу
Код

info.text = nechto.childNodes[1].childNodes[i].lastChild.toString();


Добавлено @ 21:40
Код

        _root["f"+i].onRelease = function (){
        info.text = nechto.childNodes[1].childNodes[i].nodeName;
        }

в данном случае в поле выводится undefined

Автор: Maksys 18.1.2009, 10:19
Цитата(StachelDraht @  8.1.2009,  00:36 Найти цитируемый пост)
в данном случае в поле выводится undefined

там выводиться ubdefinded потому, что массив проходящий цикл for останавливаеться на последнем поле xml тоесть на несуществующем
Я же говорю так кнопки не делаються. там ребята решают этот вопрос через прототипы.


И вообще давай исходник свой. раз в моем не разобрался давай твой позырим smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)