Просмотр полной версии : Где-то Err
Вот тут получилась такая аказия,
написал хмл
<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 ();
мото подскажете в каком я месте лошу?
firstChild часто нул и есть...
и лучше циклить до кол-ва элементов:
for (i=0; i<xmlElement.childNodes.length; i++){
if (xmlElement.childNodes[i] != null){
//остальной код...
xmlElement=doc;
в этом контексте непонятно зачем так делать и тогда уж
delete doc; - не у всех P4
xmlElement.nextSibling; вполне может быть я во что-то не врубаюсь - но что это должно делать?
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
бякак какая-то.
попробуй добавить проверку на 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);
}
}
}
sts спасибо, я твой должник.
у меня вон оказывается в чем беда была
я вместо
doc.childNodes[i].attributes.id;
писал
doc.attributes.id;
Ну вообщемто, и куча других.
Да слушай а ты где нибудь работаешь?
напиши мне на ama2001@narod.ru
А чего-то опять беда.
я написал все работает, но почему-то вславляет левые строчки, похоже как пустые.
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)
тады все будет ок.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.