Просмотр полной версии : childNodes.length troubles
amphetamine
11.12.2005, 22:44
xm = new XML();
...
xm.load("menu1.xml");
...
am[i].xx = new XML (xm.firstChild.childNodes[i].childNodes);
...
далее есть поцедурка
RollOver = function (n) {
with (n) {
trace(xx.childNodes.length);
};
};
xx.childNodes.length показывает неверное число нод
если сделать trace каждой ноде то будет видно, что через одну идут ноды содержащие просто "," хотя в исходной xml такого нету
в чем моя проблема ?
заранее спасибо
amphetamine
12.12.2005, 01:35
ignoreWhite = true
cтоит true, как ни странно
прилепил исходник + xml файл если я непонятно изложил суть проблемы
:)))))))))))))))))))))))))))))
Ты массив выводишь:)))))))))))))))))))))
loadXML = function(xmlName) {
xm.load("menu1.xml");
xm.ignoreWhite = true;
xm.onLoad = function (loaded) {
if (loaded) {
for (i=0; i <= xm.firstChild.childNodes.length-1; i++) {
am[i] = _root.me.attachMovie("item","it"+i,getNextHighestDepth(),{_x:0, _y:mainbut._height + i*20, sel:_sel,xx:asd});
am[i].title.text = xm.firstChild.childNodes[i].attributes.name;
am[i].xx = new XML (xm.firstChild.childNodes[i].childNodes);
am[i].xx.ignoreWhite = true;
if (am[i].xx.hasChildNodes() == false) {am[i].arr._visible = false;};
};
};
};
};
Что неверно -- обработчик надо определять ДО загрузки. ДО, а не после!!
Про класс XML (http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001882.html) и XMLNode (http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001916.htmll) читать в обязательном порядке. Убрать нахрен точки с запятой после закрывающих фигурных скобок.
amphetamine
12.12.2005, 19:21
из объяснений и чтения хелпа, я так и не понял, почему у меня неправильно оперделяется длина массива(дочених нод), если тебе не трудно прокомментируй пожалуйста по подробнее в чем состоит моя ошибка..
читал про классы, точки с запятой теперь не ставлю=)
amphetamine
12.12.2005, 19:35
если посмотреть в debug/list variables
то при передаче хмл
Variable _level0.me.xm = [object #1] {
<m>
<k0 name="2New Project">
<k1 name="Shop">
<k2 name="shop1" link="" />
<k2 name="shop2" link="" />
<k2 name="shop3" link="" />
<k2 name="shop4">
<k3 name="a" link="" />
<k3 name="b" link="" />
<k3 name="c" link="" />
</k2>
</k1>
<k1 name="Prtfolio">
<k2 name="p1" link="" />
<k2 name="p2" link="" />
</k1>
<k1 name="HomePage">
<k2 name="HP1" link="" />
<k2 name="HP2" link="" />
</k1>
</k0>
<k0 name="Save Project" link="" />
<k0 name="Load saved Project" link="" />
<k0 name="About" link="" />
</m>
}
при передаче части хмл-ки появляются запятые
Variable _level0.me.it0.xx = [object #7] {
<k1 name="Shop">
<k2 name="shop1" link="" />
<k2 name="shop2" link="" />
<k2 name="shop3" link="" />
<k2 name="shop4">
<k3 name="a" link="" />
<k3 name="b" link="" />
<k3 name="c" link="" />
</k2>
</k1>
,
<k1 name="Prtfolio">
<k2 name="p1" link="" />
<k2 name="p2" link="" />
</k1>
,
<k1 name="HomePage">
<k2 name="HP1" link="" />
<k2 name="HP2" link="" />
</k1>
}
и неправильно определяется childNode.length
вопрос в том, что я неправильно делаю...
исходник прилагается
Что неверно -- обработчик надо определять ДО загрузки. ДО, а не после!!
Честно говоря во флэше глубоко пофигу где писать обработчик (до команды лоад или строкой после, главное в том же блоке), так как он полюбому запуститься только после того как очиститься стэк функций.
Честно говоря во флэше глубоко пофигу где писать обработчик (до команды лоад или строкой после, главное в том же блоке), так как он полюбому запуститься только после того как очиститься стэк функций.
Аха. Вот такие вот начитанные миллиард раз задавали вопросы "почему у меня лишние undefined вылазят при загрузке", а также "почему звук после загрузки не проигрывается".
Аха. Вот такие вот начитанные миллиард раз задавали вопросы "почему у меня лишние undefined вылазят при загрузке", а также "почему звук после загрузки не проигрывается".
Тогда поясню менее начитанным:
* Загрузка во флэш асинхронная?
* Сколько исполняющихся потоков кода?
* Что из себя фактически представляет скрипт написанный в кадре?
так как потоков всего один, и код на кадре фактически безымянная функция, то даже если загрузка произошла в тот же самый момент (хотя и это не возможно, спроси у Нокса он тебе подробно объяснит) когда была команда лоад, обработчик запуститься после того как выгрузиться эта безымянная функция
то бишь, если так написать, будет работать всегда
var lv:LoadVars = new LoadVars ();
lv.load ('text.txt');
lv.onLoad = function () {}
З.Ы. кстати по той же причине сетИнтервал работает не так точно как хотелось бы
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.