![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 3
|
Пишу скрипт, зашёл в тупик, упёрся в стену лбом ...
Загружаю XML-файл, читаю данные, перевожу в многомерный массив, массива нет, хотя в Debug > Variables List массив есть в том виде, в каком и требовалось. Код примерно такой (упростил по самые-самые): global.table = new Array(); // массив для данных
XMLdata = new XML();
XMLdata.ignoreWhite = true;
XMLdata.load("data.xml"); // загружаю файл
XMLdata.onLoad = isXMLloaded;
function isXMLloaded(success)
{
if (success)
{
readXML(XMLdata.childNodes);
}
}
function readXML(nodes)
{
for (var i = 0; i<nodes.length; i++)
{
depthY++;
//в этом месте расположен код для перевода данных XML в массив.
//код работает, т. к. если, например, после него поставить
//trace(_global.table[0][5]); то трассировщик выдаёт
//верный результат
if (nodes[i].childNodes.length>0)
{
depthX++;
readXML(nodes[i].childNodes);
}
}
depthX--;
}
//а если команду trace() вставить здесь, то данных из массива не дождёшься
Вот я и спрашиваю: где косяк? |
|
|||||
|
А как ты делаешь trace(..) там, где оно не работает?
В первой строчке вместо _global написано global. Опечатка? И где ты вызываешь эти функции?
__________________
Я не любопытный и хитрый, а любознательный и сообразительный! Последний раз редактировалось Lego; 22.09.2004 в 16:00. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
ты всё делаешь правильно. и весь код у тебя организован с расчетом на то, чтобы данные стали обрабатываться как только они будут загружены...
...так какого же черта ты пытаешься при этом трейсить данные массива, когда он не то что еще не создался, но даже ХМЛ для него еще не загрузился :) |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 3
|
для Lego:
да, с global получилась опечатка, в оригинальном коде всё верно: _global ... так, я начинаю дотумкивать, я пытаюсь обратиться к массиву не из функции, а из скрипта, помещённого во фрэйм в первом кадре, ... XML ещё не загрузился и данные из него в массив ещё не переведены, а я уже хочу получить ссылки из массива ... и хренашечки. Соответственно, надо делать вызов последовательно из функции. Правильно? ![]() |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 3
|
Да, чуть не забыл: основной код тоже в первом фрэйме ...
Но обращаться к массиву мне надо из других клипов. Я понимаю, что это плохая практика - держать разные части скрипта в разных местах - но в моём случае так менее громоздко ... |
|
|||||
|
XML грузится не сразу. Нужно какое-то время.
Делай так, проверенный способ: myXML = new XML(); myXML.load("data.xml"); // событие, которое происходит после загрузки файла myXML.onLoad = function(success) { if(success) { readXML(...); ... } else trace("Is not tres-bien!"); }
__________________
Я не любопытный и хитрый, а любознательный и сообразительный! |
![]() |
Часовой пояс GMT +4, время: 19:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|