PDA

Просмотр полной версии : В текстовое флэш-поле из файла XML


kengooroo
16.03.2006, 16:01
Есть такая функция:

my_xml = new XML();
_root.btn.onPress = function() {
my_xml.load("1.xml");
trace(my_xml.firstChild.firstChild.nodeType);
trace(my_xml.firstChild.firstChild.nodeName);
trace(my_xml.firstChild.firstChild.nodeValue);
trace(my_xml.toString());
trace(my_xml.firstChild.nodeName.toString());
trace(my_xml.firstChild.firstChild.nodeValue);
txt = my_xml.firstChild.firstChild.nodeValue;
};


Далее содержание фала 1.xml:
<score>10</score>

Ситуация такова - есть текстовое поле txt кнопка btn, при нажатии на которую должно выводиться содержание XML-файла в текстовое окно, но вместо "10" в поле выводится "undefined", также в поле trace выводяться все запросы отображаются как "undefined". А уже при повторном нажатии на кнопку в текстовом поле и в поле trace отображается информация, которая там и должна отображаться при первом нажатии на кнопку.
Помогите разобраться с этой ситуацией - это или код плохой или сама прога(Flash MX 2004 pro) запареная?

Raist
16.03.2006, 16:40
Во-первых, файл XML должен иметь формат:
__________
<?xml version="1.0"?>
<data>
</data>
__________

Т.е. первая строка про версию обязательна.

Во-вторых, посмотри мой пример. Там есть нормальная загрузка XML. Ты сразу пытаешься обратиться к данным, а лучше "подождать", пока объект XML отрапортует о том, что данные поступили.

Пример: http://www.flasher.ru/forum/showthread.php?t=76968

__i
16.03.2006, 16:58
Т.е. первая строка про версию обязательна.

Флешу по барабану есть она или нет!

kengooroo
16.03.2006, 18:26
Во-первых, файл XML должен иметь формат:
__________
<?xml version="1.0"?>
<data>
</data>
__________

Т.е. первая строка про версию обязательна.

первая строка не обязательна.

Во-вторых, посмотри мой пример. Там есть нормальная загрузка XML. Ты сразу пытаешься обратиться к данным, а лучше "подождать", пока объект XML отрапортует о том, что данные поступили.
Это про функцию my_xml.loaded? Так она не работает

Raist
16.03.2006, 18:46
Флешу по барабану есть она или нет!
Странно, но у меня MX2004Pro и ему совсем не по барабану. Попросту говоря, он не понимает файл без этой строки.

Samodelkin
16.03.2006, 18:47
есть событие такое onLoad.

Samodelkin
16.03.2006, 18:58
Странно, но у меня MX2004Pro и ему совсем не по барабану. Попросту говоря, он не понимает файл без этой строки.
Что значит не понимает? У меня всегда было по барабанну и 2004 тоже.

kengooroo
18.03.2006, 22:28
Во-первых, файл XML должен иметь формат:
__________
<?xml version="1.0"?>
<data>
</data>
__________

Т.е. первая строка про версию обязательна.

Во-вторых, посмотри мой пример. Там есть нормальная загрузка XML. Ты сразу пытаешься обратиться к данным, а лучше "подождать", пока объект XML отрапортует о том, что данные поступили.

Пример: http://www.flasher.ru/forum/showthread.php?t=76968
ну изменил я XML-файл так:
<?xml version="1.0" encoding="UTF-8" ?>
<score>10</score>
Результат - тот же, после первого вызова инфы из файла - undefined, а только со второго раза все работает :confused:

alkonaft
18.03.2006, 23:01
/

назови текс именем.
при Onload
Пиши
txt.text = my_xml.firstChild
У тебя в xml только одна дочка. А не две.

ps если не стоит событие onload то флеш вообще ни чего не выдаёт.

kengooroo
19.03.2006, 03:11
А как этот onLoad включить?

alkonaft
19.03.2006, 03:46
my_xml= new XML();
my_xml.load("123.xml");
my_xml.ignoreWhite = true;
my_xml.onLoad = analis;
function analis() {

//Пишиш код.


trace(my_xml.firstChild.nodeType);
trace(my_xml.firstChild.nodeName);
trace(my_xml.firstChild.nodeValue);
trace(my_xml.toString());
trace(my_xml.firstChild.nodeName.toString());
trace(my_xml.firstChild.nodeValue);
txt.text = my_xml.firstChild.nodeValue;

}

kengooroo
19.03.2006, 15:13
Спасибо!!!!!!!!!!!!!!!! :cool:

KUZEN
20.03.2006, 02:10
my_xml = new XML();
_root.btn.onPress = function() {
my_xml.onLoad = function(ok) {
if (ok) {
txt = this.firstChild.firstChild.nodeValue;
}
};
my_xml.load("1.xml");
};

alkonaft
20.03.2006, 03:50
my_xml = new XML();
_root.btn.onPress = function() {
my_xml.onLoad = function(ok) {
if (ok) {
txt = this.firstChild.firstChild.nodeValue;
}
};
my_xml.load("1.xml");
};
Он в иеархии не разобрался.