PDA

Просмотр полной версии : загрузка данных из внешних источников в переменную (не в текстовое поле))


Makes
27.07.2005, 18:49
Есть 2 кадра. В первом скрипт, на втором - стоп. В текстовое поле данные грузятся, а в переменную нет. Есть кнопка on(Release){gotoAndPlay(1);} нажимаешь ее - инфа появляется в переменной, но надо сразу с первого кадра. Порыл хелп, там есть что-то типа ожидания загрузки переменной - вставил. Не получается. Переменная нужна сразу для определения количества циклов (выделено красным). Причем в аутпуте порядок вывода переменных "перевернут". Аутпут такой по этому коду:
undefined
45 (например)

Вот код:

loadVariables("doit.php", _root);
function checkParamsLoaded(){
if (_root.rows == undefined){
checkParamsLoaded();
} else {
clearInterval(param_interval);
trace(_root.rows); <== Вот сдесь в аутпуте она выводится второй строкой!
}
}
var param_interval = setInterval(checkParamsLoaded, 50);

trace(_root.rows); <== А вот сдесь вылазит undefined (первой строкой)!

setProperty(gline, _width, gw);
hw = getProperty(gline, _width);
wx = getProperty(gline, _x);
wy = getProperty(gline, _y);
htabs = hw/4 - 10;
for (vl = 1; vl < 4; vl++){
vlinepos = wx + hw*vl/4;
vlname = "vline" + vl;
setProperty(vlname, _x, vlinepos);
}

for(f = 0; f < rows; f++){
if (f == 0){var cellvpos = wy;} else {
var prevcell = (f - 1) + "tab0";
var cellvpos = getProperty(prevcell, _y) + vt;
}
var vt = 0;
for(z = 0; z < 4; z++){
cellname = f + "tab" + z;
cellhpos = wx + z * (hw / 4) + 5;
if(f == 0){
setProperty("set" + z, _x, cellhpos);
setProperty("set" + z, _width, htabs);
}
depth = f * 10 + z;
this.createTextField(cellname, depth, cellhpos, cellvpos, htabs, 50);
this[cellname].multiline = true;
this[cellname].wordWrap = true;
this[cellname].autoSize = true;
this[cellname].textColor = 0xffffff;
this[cellname].text = "123";
vcell = this[cellname]._height;
if (vcell > vt){vt = vcell;}
}
if(f != 0){
newgname = "glinez" + f;
duplicateMovieClip(gline, newgname, f*100);
this[newgname]._x = wx;
this[newgname]._y = cellvpos;
for (vlh = 1; vlh < 4; vlh++){
vlname = "vline" + vlh;
vlinehpos = cellvpos + vt + 5 - getProperty(vlname, _y);
setProperty(vlname, _height, vlinehpos);
}
}
}

ЗЫ: в doit.php написано rows=45

K.A.T.A.F.A.L.K.E.R
27.07.2005, 19:11
Понимаешь в чем прикол, ничего в мире этом не происходит моментально... Даже у тока в проводах есть своя скорость :)) Короче, я к чему... Когда вызывается твой LoadVariables загрузка данных произойдет не моментально, о чем свидетельствует выведенное тобой значение undefined, которое вывелось сразу же после попытки что-либо загрузить... Когда же данные загрузились - сработал прелоадер, вывелось нормальное значение. Т.е., выполняй тот скрипт, что идет ниже прелоадера только тогда, когда загрузка выполнится. Проще всего - скопируй его и вставь туда, где стоит тот trace, что выводит нормальное значение...

Makes
27.07.2005, 19:18
Понимаешь в чем прикол, ничего в мире этом не происходит моментально Как раз это я уже осознал! Но ведь как раз-таки стоит там этот прелоадер, в котором выводится нормальное значение, и только потом уже выводится undefined. Вот в чем загадка!
скопируй его и вставь туда, где стоит тот trace, что выводит нормальное значение Пробовал - выдает
256 levels of recursion were exceeded in one action list.
This is probably an infinite loop.
Further execution of actions has been disabled in this movie.

Makes
27.07.2005, 22:44
перед тем как написать предышущий пост, потестил предложенный вариант. через 2 часа пришел, скомпилял - работает. только поля не создаются. будем искать. если кто-то что-то знает наверняка, пожалуйста, ответьте!