Просмотр полной версии : O loadvariables в цикле
slavak78
13.10.2009, 13:36
Имеется два текстовый файла txt1.txt и txt2.txt
В первом написано messages="Hello", а во втором messages="GoodBye".
Во флеше:
_root.createEmptyMovieClip("loadTarget_mc", this.getNextHighestDepth());
_root.loadTarget_mc.onData = function() {
trace(this.messages);
};
for (var i:Number = 0; i < 2; i++) {
loadVariables("tyt"+i+".txt", _root.loadTarget_mc);
}
Так вот, trace возвращает только messages из последнего файла, т.е. "GoodBye". Как вернуть оба значения?
Предложения типа все записать в один текстовый файл и объявить разные переменные не подходят.
Для оформления своего кода надо использовать теги (http://www.flasher.ru/forum/showthread.php?t=122539)
Так первое значение messages затирается другим.
PS: loadVariables устарело, используйте LoadVars, этот класс лучше работает.
slavak78
13.10.2009, 14:03
Так первое значение messages затирается другим.
PS: loadVariables устарело, используйте LoadVars, этот класс лучше работает.
А можно пример кода, пожалуйста, чтобы он два значения возвращал.
Используйте массив.
Массивы используются для хранения набора однотипных по логике алгоритма значений.
Сделайте так:
_root.createEmptyMovieClip('loadTarget_mc', _root.getNextHighestDepth());
_root.loadTarget_mc.messages = new Array();
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
_root.loadTarget_mc.messages[count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
На выходе имеем массив: messages[1], messages[2] с вашими текстами (кавычки уберите в текстовых файлах, они не нужны).
Можно без массива, тогда просто именуем переменные по номеру:
_root.createEmptyMovieClip('loadTarget_mc', _root.getNextHighestDepth());
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
_root.loadTarget_mc['message' + count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
тут на выходе имеем message1, message2 внутри loadTarget_mc
И, кстати, если уж вы используете _root, а не this, до и в getNextHighestDepth нужно узнавать наивысшую свободную глубину на _root.
Если у вас все происходит там же, где и мувик ваш создается, выкиньте _root и замените на this:
this.createEmptyMovieClip('loadTarget_mc', this.getNextHighestDepth());
loadTarget_mc.messages = new Array();
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
loadTarget_mc.messages[count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
Добавлено через 10 минут
else можно убрать, это для отладки только
slavak78
13.10.2009, 14:21
Используйте массив.
Массивы используются для хранения набора однотипных по логике алгоритма значений.
Сделайте так:
_root.createEmptyMovieClip('loadTarget_mc', _root.getNextHighestDepth());
_root.loadTarget_mc.messages = new Array();
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
_root.loadTarget_mc.messages[count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
На выходе имеем массив: messages[1], messages[2] с вашими текстами (кавычки уберите в текстовых файлах, они не нужны).
Можно без массива, тогда просто именуем переменные по номеру:
_root.createEmptyMovieClip('loadTarget_mc', _root.getNextHighestDepth());
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
_root.loadTarget_mc['message' + count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
тут на выходе имеем message1, message2 внутри loadTarget_mc
И, кстати, если уж вы используете _root, а не this, до и в getNextHighestDepth нужно узнавать наивысшую свободную глубину на _root.
Если у вас все происходит там же, где и мувик ваш создается, выкиньте _root и замените на this:
this.createEmptyMovieClip('loadTarget_mc', this.getNextHighestDepth());
loadTarget_mc.messages = new Array();
function loadVar (count:Number) {
var load_lv:LoadVars = new LoadVars();
load_lv.onLoad = function(success:Boolean) {
if (success) {
loadTarget_mc.messages[count] = this.messages;
} else {
trace('error');
}
};
load_lv.load('tyt' + count + '.txt');
}
for (var i:Number = 1; i <= 2; i++) {
loadVar(i);
}
Добавлено через 10 минут
else можно убрать, это для отладки только
Спасибо большое!
Пожалуйста. Мегацитирование уберите.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.