PDA

Просмотр полной версии : Как использовать переменную в условии for?


rispekt
27.07.2007, 14:57
var xmlTest:XML = new XML();
xmlTest.ignoreWhite = true;
xmlTest.load("par1.xml");
xmlTest.onLoad = function(){
_root.num=xmlTest.childNodes[0].childNodes[0].firstChild;
_root.num=parseInt(_root.num);
}
for (i = 1; i < _root.num ; i++) {
var mc = this.attachMovie ("level1", "container"+i, this.getNextHighestDepth());
mc.loadMovie(i + ".jpg");
mc._x = i+30;
}

Почему-то не работает.

iNils
27.07.2007, 14:59
Вы сначала в трейс выведите _root.num и посмотрите, что выходит

zurmansor
27.07.2007, 15:01
а что вообще содержится в _root.num перед циклом?

etc
27.07.2007, 15:07
Ничего не содержится, ибо onLoad выполнится гораздо позже цикла, следующего сразу за ним ввиду асинхронности.

rispekt
27.07.2007, 15:11
трейс показывает то, что нужно. 15 тоесть. (прикреплён скриншот)
А for почему-то не работает... хотя если написать 15, вместо num, все ок.

rispekt
27.07.2007, 15:12
Ничего не содержится, ибо onLoad выполнится гораздо позже цикла, следующего сразу за ним ввиду асинхронности..

тоесть нужно перенести for в сл. кадр?

etc
27.07.2007, 15:13
Потому что onLoad на момент выполения цикла ещё не был выполнен. Он выполнится только тогда, когда будет загружен файл. Никакой остановки выполнения кода после load не будет, это не C++.
Цикл нужно воткнуть внутрь onLoad, а не в следующий кадр.

rispekt
27.07.2007, 15:18
Потому что onLoad на момент выполения цикла ещё не был выполнен. Он выполнится только тогда, когда будет загружен файл. Никакой остановки выполнения кода после load не будет, это не C++.
Цикл нужно воткнуть внутрь onLoad, а не в следующий кадр.

А по-другому никак нельзя?
Мне эту переменную еще нужно будет много раз использовать. Как-нибудь можно сделать так, чтобы она загрузилась в начале мувика и была доступна на его протяжении?

iNils
27.07.2007, 15:20
Она и будет доступна, но после загрузки.

Жень Шень
27.07.2007, 18:12
var xmlTest:XML = new XML();
xmlTest.ignoreWhite = true;
xmlTest.load("par1.xml");
xmlTest.onLoad = function(success:Boolean){
if (success) {
trace(“Загрузка прошла успешно”)
// пишем дальше свой код
} else {
trace("Ошибка загрузки");
}

}