PDA

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


3r0jan
13.02.2006, 02:11
может кто подскажет ?
есть текст в текстовом файле
1:17.00:0.20:2:8:10:8:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:7:5:15:5:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
1:27.00:0.20:2:10:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:
гружу его в флэш var my_xml:XML = new XML();
var my_txt:String;
my_xml.ignoreWhite= true;
my_xml.onLoad=function(ok){
if(ok){
my_txt=''+my_xml;
trace(my_txt);
}
}
my_xml.load('amulets.txt');
далеее есть некий мув который дублируется и в его дубль надо загрузить строку соответствующую номеру этого дубля затем там там её разщипить и присвоить каждое значение из строки определённой переменной возможно ? если да то как ? думал думал и не предумал (((

Король
13.02.2006, 02:19
1) строковую переменную можно разбить на массив по идентефикатору

str = "1,2,3"
arr= str.split(",")
arr даст в итоге [1,2,3]


2)если уж грузишь текст в XML, то почему бы не использовать собственно xml?
3)присваивать в цикле мувикам элементы массива оч просто -

for(var i =0;i< arr.length, i++){
mc = твой очередной дуплкат
mc.text = arr[i]
}

3r0jan
13.02.2006, 02:38
чёт нифига непонял ((( сделал вот так stop();
var my_xml:XML = new XML();
var my_txt:String;
my_xml.ignoreWhite= true;
my_xml.onLoad=function(ok){
if(ok){
my_txt=''+my_xml;
trace(my_txt);
}
}
my_xml.load('amulets.txt');
maxpreview = 40;

// количество превьюх
maxpreview_x = 5;
// количество превьюх в одной строке
preview_step_y = 22;
// шаг смещения по Y
preview_step_x = 62;
// шаг смещения по X
count = 1;
preview._x = -preview_step_x+1;
// убираем первый экземпляр за область видимости
preview._visible = 0;
// и делаем его невидимым
str = my_txt
arr= str.split(":")
//arr даст в итоге [1,2,3]
for (i=0; i<=maxpreview; i++) {
preview.duplicateMovieClip("preview"+i,i);
preview = this["preview"+i];
preview.nomer = i;
preview.mc = arr[i]
preview._x = preview._x+preview_step_x;
loadMovie("amulet/amulet"+i+".gif", preview.area);

if (i == (count*maxpreview_x)) {
count = count+1;
preview._x = 1;
preview._y = preview._y+preview_step_y;
}
} в дубле кнопка с такой функцией but.onRollOver = function() {
tellTarget ("but") {
gotoAndStop(2);
}
_root.info._visible = 1;

_root.info.info = "ТРЕБУЕТСЯ \nСила: "+sila+"\nЛовкость: "+lovk+"\nВыносливость: "+vin+" "+mc;
}; вот типа к переменным sila ,lovk , vin и там будет дальше ещё куча переменных надо присвоить значение из соответствующей ечейки к примеру sila это ечейка 4 (1:17.00:0.20:2:8:10) тоесть при наведении мышки на кнопку должно показывать "Сила: 2"

3r0jan
13.02.2006, 03:40
выдаёт ошибки или же пишет унтитлед вместо данных (((
мож глянет кто ?

Madasan
13.02.2006, 10:44
Поробуй так:var my_xml:XML = new XML();
var fname:String = "amulets.txt";
my_xml.ignoreWhite = true;
my_xml.onData = function(str) {
my_arr = str.split(",");
trace(my_arr[0]);
trace(my_arr[1]);
trace(my_arr[2]);
trace(my_arr[51]);
trace(my_arr[52]);
//myFunc()
};
my_xml.load(fname);
function myFunc() {
for (i=0; i<=maxpreview; i++) {
preview.duplicateMovieClip("preview"+i, i);
preview = this["preview"+i];
preview.nomer = i;
preview.my_txt = my_txt[i];
trace(preview.my_txt);
preview._x = preview._x+preview_step_x;
loadMovie("amulet/amulet"+i+".gif", preview.area);
if (i == (count*maxpreview_x)) {
count = count+1;
preview._x = 1;
preview._y = preview._y+preview_step_y;
}
}
}и проанализируй что получилось ;)

3r0jan
13.02.2006, 11:19
ну да получилось то что надо ))) только он обрабатывает все строки подряд а мне надо чтоб для первого дубля мувика он обрабатывал первую строку для второго 2ю для тиретьего третью и т.д. возможно ?
пробовал вот так my_xml.onData = function(str) {
for (p=0; p<=52; p++) {
my_arr = str.split(",");
trace(my_arr[[1],[0]]);
}
//myFunc()
} ничего не получается (((
по ходу дела выход есть вот такой ?
for (i=0; i<=maxpreview; i++) {
preview.duplicateMovieClip("preview"+i, i);
preview = this["preview"+i];
for (p=0; p<=52; p++) {
my_arr = str.split(",");
trace(my_arr[p+52]);
}
preview.nomer = i;
preview._x = preview._x+preview_step_x;
loadMovie("amulet/amulet"+i+".gif", preview.area);
if (i == (count*maxpreview_x)) {
count = count+1;
preview._x = 1;
preview._y = preview._y+preview_step_y;
}
}

3r0jan
13.02.2006, 12:08
неа тоже неканает (((

Madasan
13.02.2006, 12:10
только он обрабатывает все строки подряд а мне надо чтоб для первого дубля мувика он обрабатывал первую строку для второго 2ю для тиретьего третью и т.д. возможно ?
Можно между строками поставить другой разделитель,не "," , а , например, "&". Тогда:my_arr = str.split("&");
for (i=0; my_arr.length; i++) {
my_txt[i] = my_arr[i].split(",");
};
trace(my_txt[0][0])Или действительно пользоваться средствами XML или LoadVars, ведь только тогда тебе понадобиться обработчик onLoad(), а чтобы самому пропарсить подгруженный текст достаточно обработчика onData().

3r0jan
13.02.2006, 12:32
всёравно не прёт =/ undefined
в текстовом файле делаю вот так 1,17.00,0.20,2,8,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&
45,17.00,0.20,2,8,10,8,0,3,0,0,4,0,0,0,0,0,0,0,0,0,0,7,5,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9&

3r0jan
13.02.2006, 14:27
хе хе )))) вот как вышел из положения в самом дубле сделал вот так
var my_xml:XML = new XML();
var fname:String = "amulets.txt";
my_xml.ignoreWhite = true;
my_xml.onData = function(str) {
my_arr = str.split("&");
my_arr = my_arr[nomer].split(",");

};
my_xml.load(fname); всё работает ))) всем спасибо !