PDA

Просмотр полной версии : loadVars - проблема


BorisL
25.06.2005, 15:34
Не смог разобраться сам, поэтому обращаюсь к наиболее компетентным, то есть к вам-)

Переменные подгружаю из файла (ниже кусочек):

num=2
&x_1=100
&y_1=100
&icon_1=icon1.gif
&descr_1=текст
&href_1=url1
&name_1=текст
&x_2=200
&y_2=200
&icon_2=icon2.gif
&descr_2=текст
&href_2=url2
&name_2=текст


Далее мне необходимо размножить один мувик и положить в соответствующие экземпляры нужные переменные.

this.lv = new LoadVars();
this.lv.load("vars.txt");
this.lv.onLoad = function() {
for (i=1; i<=this.num; i++) {
item.duplicateMovieClip('item'+i, i);
_root['item'+i]._x = this["x_"+i];
_root['item'+i]._y = this["y_"+i];
_root['item'+i].name = this["name_"+i];
_root['item'+i].descr = this["descr_"+i];
_root['item'+i].href = this["href_"+i];
_root['item'+i].icon = this["icon_"+i];
}
};

При этом происходит следующее: мувик множится, все текстовые переменные (name, descr, href, icon) передаются и выводятся в соответствующих местах все экземпляров, но экземпляры не встают по нужным местам, то есть код

_root['item'+i]._x = this["x_"+i];
_root['item'+i]._y = this["y_"+i];

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

_root['item'+i]._x = 100;
_root['item'+i]._y = 100;

То все мувики нормально передвинутся

7thsky™
25.06.2005, 16:26
через лоадварс загружается все правильно, просто в подобных случаях как у тебя будут неправильно парситься числовые значения

num=2
&x_1=100
&y_1=100
&....
ты именно так получаешь? или ввиде строчки?

в любом случае можно парсить

_root['item'+i]._x = parseInt(this["x_"+i]);
_root['item'+i]._y = parseInt(this["y_"+i]);

вот посмотри функции parseInt (http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001632.html) , parseFloat (http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001631.html)

проблема в том что если после числа у тебя есть пробел то при парсинге переменная будет String

Буньков Максим
25.06.2005, 18:19
или пожешь Number юзать, но может быть трабла и в ссылке this попробуй путь явно указывать через _root, но этот глюк редко встречается

7thsky™
25.06.2005, 18:31
Number тут не поможет, так как если после цифры идут еще какие нить символы например пробел то выдаст NaN

вот попробуй :

trace ('Number: ' + Number ('100 '));
trace ('parseInt: ' + parseInt ('100 '));

BorisL
25.06.2005, 19:51
Всем большое спасибо! parseInt помог!