PDA

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


kolin
28.09.2008, 19:07
прошу помочь! у меня после загрузки внешнего файла, переменной не присваивается его значение?

Mur4ik
28.09.2008, 19:12
Вы на ответ флешера-екстрасенса расчитываете?
Покажите код или опишите конкретней проблему...
Чем доходчивей изложите суть проблемы, тем быстрее найдется решение

kolin
28.09.2008, 19:49
код прост! файл загружается успешно,значение паременной ret (файла empty.txt) выводится на панель, но не присваивается переменной meml. При попытке вывода переменной возвращает undefined!

var mal:LoadVars=new LoadVars();
mal.onLoad= function(){

var meml:String=new String(this.ret);
trace(this.ret);
}
mal.load('empty.txt');
asd_txt.text=meml;
trace(meml);

Mur4ik
28.09.2008, 20:00
Решение просто!
Переменная meml определена локально в функции mal.onLoad() и естественно вне функции она undefined
Объявите её вне функции и в самой функции просто присвойте ей нужное значение.

kolin
28.09.2008, 20:20
то есть код должен быть как ниже приведённый?

var mal:LoadVars=new LoadVars();
var meml:String=new String();
mal.onLoad= function(){
meml=this.ret;
trace(this.ret);
}
mal.load('empty.txt');
asd_txt.text=meml;
trace(meml);

этот код тоже возвращает undefined переменной meml

udaaff
28.09.2008, 20:33
Загрузка не мгновенно происходит.

Mur4ik
28.09.2008, 20:35
а если протрейсить meml внутри mal.onLoad()?

Mur4ik
28.09.2008, 20:37
и udaaff прав - в Вашем случае лучше использовать onData

kolin
28.09.2008, 21:05
код с использованием события onData присваивает переменной meml весь текст файла и не позволяет обращаться к значению переменной ret.

мне необходимо извлечь эти значения и использовать вне функции?

etc
28.09.2008, 21:10
kolin, отредактируйте свои посты и оформите код тегами .

Mur4ik
28.09.2008, 21:18
не забывайте про теги code для оформления своего кода

попробуйте вот так:
var mal:LoadVars = new LoadVars();
mal.onLoad = function(bSuccess:Boolean){
if (bSuccess) {
asd_txt.text = this.ret;
} else {
trace("Error loading/parsing LoadVars.");
}
}
mal.load('empty.txt');


ввиду асинхронности кода во флеше в Вашем коде строчка trace(meml); выполняестся тогда когда данные ещё не загрузились

причем в файле empty.txt после ret не должно быть пробелов (ret=привет)

kolin
28.09.2008, 21:21
var mal:LoadVars=new LoadVars();
var meml:String=new String();
mal.onLoad= function(){
meml=this.ret;
trace(this.ret);
}
mal.load('empty.txt');
asd_txt.text=meml;
trace(meml);

вот так?

Mur4ik
28.09.2008, 21:38
нет, не так
сначала выполняется весь код (и после функции onLoad тоже)
а в это время загружается empty.txt и когда Вы пытаетесь присвоить meml
asd_txt.text=meml;
trace(meml);

ей еще не успелось присвоится никакого значения,
... используйте мой код выше (я его подправил уже)

kolin
28.09.2008, 21:55
Благодарю вас за помощь!!!
это мне существенно помогло, но теперь возникают новые вопросы, а именно заполнив в функции массив данными из файла, возможно ли их использование вне функции?

Mur4ik
28.09.2008, 21:59
да, но опять же если массив будет определен вне функции