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

intro 24.10.2006 17:41

Проблемы с XML
 
Вот кусок кода:
Код:

_global.xml_array = new Array();
var my_xml:XML = new XML();        //Блок подключения и загрузки XML
my_xml.ignoreWhite = true;
my_xml.load("http://10.182.3.13/current_measure_xml/doXML.php");
my_xml.onLoad = function(ok) {
        if (ok) {
        for (j=0; j<575; j++) {
                    _global.xml_array[j+1] = new Array;
                        _global.xml_array[j+1].val=my_xml.childNodes[0].childNodes[j].childNodes[0].childNodes[0].nodeValue;
                        _global.xml_array[j+1].typ=my_xml.childNodes[0].childNodes[j].childNodes[1].childNodes[0].nodeValue;
                        _global.xml_array[j+1].time_stamp=my_xml.childNodes[0].childNodes[j].childNodes[2].childNodes[0].nodeValue;
                        _global.xml_array[j+1].ent_name=my_xml.childNodes[0].childNodes[j].childNodes[3].childNodes[0].nodeValue;
                        _global.xml_array[j+1].tag_name=my_xml.childNodes[0].childNodes[j].childNodes[4].childNodes[0].nodeValue;
                        //-------------------------------------------//
                        trace(_global.xml_array[j+1].val);
                        trace(_global.xml_array[j+1].typ);
                        trace(_global.xml_array[j+1].time_stamp);
                        trace(_global.xml_array[j+1].ent_name);
                        trace(_global.xml_array[j+1].tag_name);
                                                };
                        };

Дело в том, что XML не загружается до конца. Вопрос: событие onLoad срабатывает только тогда когда XML полностью загружен или тогда, когда он начинает загрузку?

etc 24.10.2006 18:09

onLoad вызывается после загрузки XML.

intro 24.10.2006 18:17

Так в чём может быть проблема? Может есть какие-то ограничения? У меня из 575 полей заполняет только 557. С самим XML всё впорядке, он через браузер грузится до конца, время на это уходит где-то секунд 5, а вот во флэше всё как-то быстрее, такое чуство, что не до конца загружает.

etc 24.10.2006 18:27

Проверяй trace-ом, что загрузилось.

intro 24.10.2006 18:39

Так проверил же... Загрузилось до 557 включительно, дальше "андифинед" и всё. При том, что всё время до 557.

etc 24.10.2006 18:42

Проверь трейсом весь XML, для начала. Т.е. выведи в аутпут весь XML.

intro 24.10.2006 19:10

В аутпут вывело весь XML. Странно... Есть ли какие-то ограничения у массива? Теперь ясно, что проблема в заполнении массива, но почему же он заполняется до 557 поля нормально, а потом нет?

intro 24.10.2006 19:18

Вот полный текст. Может быть проблема в том, что массив неуспевает заполниться до конца, как к нему уже начинает обращатся другая функция?
Код:

//Добавление свойства изменения цвета у объектов
//----------------------------------------//
MovieClip.prototype.id = function(color){
a = new Color(this);
a.setRGB(color);
};
colors_1 = [];//красный
colors_2 = [];//фиолетовый
colors_3 = [];//жёлтый
colors_4 = [];//белый
colors_5 = [];//зелёный
colors_1[1] = 0xff0000;
colors_1[16] = 0xff0000;
colors_1[272] = 0xff0000;
colors_2[1] = 0x6633CC;
colors_3[1] = 0xFFFF00;
colors_4[1] = 0xFFFFFF;
colors_5[1] = 0x006633;
//----------------------------------------//
//Заполнение массива данными из XML файла
//----------------------------------------//
_global.xml_array = new Array();
var my_xml:XML = new XML();        //Блок подключения и загрузки XML
my_xml.ignoreWhite = true;
my_xml.load("http://10.182.3.13/current_measure_xml/doXML.php");
my_xml.onLoad = function(ok) {
        if (ok) {
        for (j=0; j<575; j++) {
                    _global.xml_array[j+1] = new Array;
                        _global.xml_array[j+1].val=my_xml.childNodes[0].childNodes[j].childNodes[0].childNodes[0].nodeValue;
                        _global.xml_array[j+1].typ=my_xml.childNodes[0].childNodes[j].childNodes[1].childNodes[0].nodeValue;
                        _global.xml_array[j+1].time_stamp=my_xml.childNodes[0].childNodes[j].childNodes[2].childNodes[0].nodeValue;
                        _global.xml_array[j+1].ent_name=my_xml.childNodes[0].childNodes[j].childNodes[3].childNodes[0].nodeValue;
                        _global.xml_array[j+1].tag_name=my_xml.childNodes[0].childNodes[j].childNodes[4].childNodes[0].nodeValue;
                        //-------------------------------------------//
                        /*trace(_global.xml_array[j+1].val);
                        trace(_global.xml_array[j+1].typ);
                        trace(_global.xml_array[j+1].time_stamp);
                        trace(_global.xml_array[j+1].ent_name);
                        trace(_global.xml_array[j+1].tag_name);*/
                                                };
                        };
               
/*trace(_global.xml_array[558].val);
trace(_global.xml_array[558].typ);
trace(_global.xml_array[558].time_stamp);
trace(_global.xml_array[558].ent_name);
trace(_global.xml_array[558].tag_name);*/
};

intID1 = setInterval(color_,100);
function color_() {
        //Зарисовка выключателей "Гродно-330"
        Gro_v_1.id(colors_1[parseInt(_global.xml_array[180].val)]);
        Gro_v_2.id(colors_1[parseInt(_global.xml_array[189].val)]);
        Gro_v_3.id(colors_1[parseInt(_global.xml_array[188].val)]);
        Gro_v_4.id(colors_1[parseInt(_global.xml_array[179].val)]);
        Gro_v_5.id(colors_1[parseInt(_global.xml_array[181].val)]);
        Gro_v_6.id(colors_1[parseInt(_global.xml_array[187].val)]);
       
       
        //-------------------------------------------------------------//
        //Вывод данных телеметрии
        //ГРОДНО-330
        gr_t_1.text = _global.xml_array[165].val + 'кВ';
        gr_t_2.text = _global.xml_array[324].val;
        gr_t_3.text = _global.xml_array[323].val;
        gr_t_4.text = _global.xml_array[172].val;
        gr_t_5.text = _global.xml_array[154].val;
        gr_t_6.text = _global.xml_array[177].val;
        gr_t_7.text = _global.xml_array[160].val;
        gr_t_8.text = _global.xml_array[173].val;
        gr_t_9.text = _global.xml_array[155].val;
        gr_t_10.text = _global.xml_array[175].val;
        gr_t_11.text = _global.xml_array[157].val;
        gr_t_12.text = _global.xml_array[174].val;
        gr_t_13.text = _global.xml_array[156].val;
        gr_t_14.text = _global.xml_array[163].val+'кВ';
        gr_t_15.text = _global.xml_array[170].val;
        gr_t_16.text = _global.xml_array[161].val;
        gr_t_17.text = _global.xml_array[171].val;
        gr_t_18.text = _global.xml_array[150].val;
        gr_t_19.text = _global.xml_array[145].val;
        gr_t_20.text = _global.xml_array[152].val;
       
};
        stop();
        intID2=setInterval(function(){Play();},30000);


etc 24.10.2006 19:22

Приведу цитату Вани:
Цитата:

Сообщение от iv
- сорри, но встречая такой код, я включаю на максимум в наушниках
группу "Кровосток", песню "Жесть", понимаю, что в жизни бывает и хуже
и переделываю такой код с нуля.

Я с ним полностью согласен.

intro 25.10.2006 10:45

Спасибо за содержательный ответ. Что же я могу сделать, если только начинаю работать с флэшем. Какой бы ни был код, но он работал :)


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

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