Вход

Просмотр полной версии : Где-то Err


ama2001
06.02.2002, 21:42
Вот тут получилась такая аказия,
написал хмл

<str1 id="link 1" url="www.link1.ru"></str1>
<str2 id="link 2" url="www.link1.ru"></str2>


во флэше в первом кадре

var xmlElement;
var doc = new XML ();
doc.load("xmlfile.xml");


и в 45 кадре


xmlElement=doc;

i = 0;
while (xmlElement.firstChild != null) {
namel=xmlElement.attributes.id;
duplicateMovieClip (l, "l"+i, i);
setProperty ("l"+i, _y, i*20);
eval("l"+i+".str") = namel;
xmlElement.nextSibling;
i++;
}
stop ();

мото подскажете в каком я месте лошу?

sts
06.02.2002, 22:08
firstChild часто нул и есть...

и лучше циклить до кол-ва элементов:
for (i=0; i<xmlElement.childNodes.length; i++){
if (xmlElement.childNodes[i] != null){
//остальной код...

xmlElement=doc;
в этом контексте непонятно зачем так делать и тогда уж
delete doc; - не у всех P4


xmlElement.nextSibling; вполне может быть я во что-то не врубаюсь - но что это должно делать?

ama2001
06.02.2002, 23:17
sts я заменил как ты сказал в 45-ом кадре код на


for (i=0; i<doc.childNodes.length; i++){
if (doc.childNodes[i] != null){
namel=doc.attributes.id;
duplicateMovieClip (l, "l"+i, i);
setProperty ("l"+i, _y, i*20);
eval("l"+i+".str") = namel;
}
}
delete doc;
stop ();

он проходит всего 1 раз, и не берет переменную id
бякак какая-то.

sts
06.02.2002, 23:29
попробуй добавить проверку на id и смотри результат сначала трейсом. если трейс выдает значения то XML в порядке и ошибка не в нем

for (i=0; i<doc.childNodes.length; i++){
if (doc.childNodes[i] != null){
if (doc.childNodes[i].attributes.id != null) {
var link = doc.childNodes[i].attributes.id; //так правильней
trace ('link is ' + link);
}
}
}

ama2001
07.02.2002, 00:06
sts спасибо, я твой должник.
у меня вон оказывается в чем беда была
я вместо
doc.childNodes[i].attributes.id;
писал
doc.attributes.id;

Ну вообщемто, и куча других.

Да слушай а ты где нибудь работаешь?
напиши мне на ama2001@narod.ru

ama2001
08.02.2002, 22:19
А чего-то опять беда.
я написал все работает, но почему-то вславляет левые строчки, похоже как пустые.

for (i=0; i<doc.childNodes.length; i++){
if (doc.childNodes[i]!= null){

namel=doc.childNodes[i].attributes.id;
duplicateMovieClip (l, "l"+i, i);
setProperty ("l"+i, _y, i*20+50);
eval("l"+i+".str") = namel;
}
}
delete doc;
stop ();

whiteagle
12.02.2002, 14:48
это из-за перевода строки в ХМЛ. Флэш воспринимает перевод строки (как и пробел, как и таб) как текстовый нод. вместо if (doc.childNodes[i]!= null) поставь if (doc.childNodes[i]!= null && doc.childNodes[i].nodeType!=3)
тады все будет ок.