PDA

Просмотр полной версии : Область видимости данных массива


As_Serge
07.05.2007, 12:34
var magazin_array = new Array ();
var load_mag = new LoadVars();
load_mag.load ("c:/tt/eee.txt");
load_mag.onLoad = function (success:Boolean){
if (success == true){
magazin_array=load_mag.magtext.split("*");
//Здесь идет обработка массива
}
}
Этот код выполняется при загрузке
Вопрос в следующем: как использовать элементы массива, например magazin_array[225], вне функции load_mag.onLoad в дальнейшем в программе

CorC
07.05.2007, 12:47
Надо дождаться конца загрузки LoadVars
Т.е. последующие действия (функции) вызываются в onLoad'e

As_Serge
07.05.2007, 12:49
Все данные в массив подгружаются и обрабатываются коректно. Трудность в том, что невозможно нигда, кроме как внутри load_mag.onLoad = function (success:Boolean){
if (success == true){
magazin_array=load_mag.magtext.split("*");
//Здесь идет обработка массива
}
}
использовать данные. :(

etc
07.05.2007, 12:52
As_Serge, оформите код в посте тегами .

CorC
07.05.2007, 12:59
А я про что говорил?
Да можно использовать только в функциях вызванных после onLoad или самой onLoad

Kikasso
07.05.2007, 13:03
var magazin_array = new Array ();
var load_mag = new LoadVars();
load_mag.onLoad = function (success:Boolean){
if ( (success == true ) == true ){
magazin_array.concat( this.magtext.split("*") );
doSome();
}}
load_mag.load ("c:/tt/eee.txt");
function doSome(){
//Здесь идет обработка массива
trace( magazin_array );
}
Я там в одном месте жестко прикололся.. Сорри не удержался.
upd: код нерабочий, см. дальше

As_Serge
07.05.2007, 13:07
Извините... Я наверное не правильнно задал вопрос :(
ВОЗМОЖНО ЛИ использовать элементы массива, например magazin_array[225], ВНЕ функции ...onLoad в дальнейшем в программе?
И если - да, то как?
грубо говоря trace(magazin_array[225]);
дает undefined вне onLoad

etc
07.05.2007, 13:10
Kikasso, а в чем тайный смысл строки if ( (success == true ) == true ){
?

As_Serge, загрузка данных асинхронна, поэтому и создан onLoad. Использовать полученные элементы нужно в обработчике onLoad или так, как написал Kikasso.

Kikasso
07.05.2007, 13:13
var magazin_array = new Array ();
var load_mag = new LoadVars();
load_mag.onLoad = function (success:Boolean){
if ( success ){
magazin_array = magazin_array.concat( this.magtext.split("*") );
doSome();
}else{
trace("error");
}}
load_mag.load ("eee.txt");
function doSome(){
//Здесь идет обработка массива
trace( magazin_array );
}
2__etc: а в строке if (success == true){ больше смысла?
2 As_Serge: теперь работает. Я выделил белым.

As_Serge
07.05.2007, 16:59
ОЙ! извиняйте...
Усе заработало!!!
Спасибо всем огромное за помощь!

etc
08.05.2007, 11:58
2__etc: а в строке if (success == true){ больше смысла?
Больше, чем было у тебя :)