Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   загрузка текста через LoadVars (http://www.flasher.ru/forum/showthread.php?t=95633)

turbine 10.05.2007 13:15

загрузка текста через LoadVars
 
Подскажите, из какой переменной получить значение, загружаемое методом LoadVars?

etc 10.05.2007 13:20

А вы хелп прочитали? Если да, то такого вопроса и возникнуть не должно.

turbine 10.05.2007 13:53

Код:

my_lv.load("mean.txt"); // загрузка файла, начинающегося с "info=1"...

t2.text = my_lv.toString(info); // вывод значения в динамическое т.поле

в динамическом поле выводится: onLoad=%5Btype%20Function%5D
пробовал варианты, но получал все равно не то.
Извиняюсь, но после Delphi мнемоника AS очень тяжело дается.

etc 10.05.2007 14:28

Код:

my_lv.onLoad = function(success) {
  if (success) {
      t2.text = this.info;
  } else {
      trace('Error');
  }
}
my_lv.load('mean.txt');


turbine 10.05.2007 14:54

Т.е. получается, что передавать переменные можно только в "теле" переопределенной функции загрузчика?
Ведь если написать уже вне его

Код:

t2.text = my_lv.info;
то снова возвращается "undefined".
Если я неправ, поправьте, плиз.

etc 10.05.2007 14:59

Загрузка асинхронна с кодом. Здесь файл не может быть доступен сразу же после вызова load.

turbine 10.05.2007 15:14

Thanks. В HELPе про это написано технично, но вскользь

turbine 12.05.2007 13:11

Простите меня глупого человека, но не получается передать массив из функции. Пробовал простое присвоение через =, слияние через concat. Все равно массив, который пытаюсь заполнить остается пустым.
хоть через _root, хоть через _global.

etc 12.05.2007 13:14

Код покажите.

turbine 12.05.2007 13:20

это пробный код, чтобы разобраться как оно должно работать
Код:

var af:Array = new Array();

arrayLoad = new LoadVars();
arrayLoad.load("ws.txt");
arrayLoad.onLoad = build_array;
function build_array()
{ //здесь дробится загруженное
  arrayrow = arrayLoad.info.split(";\r\n");
  for (i=0; i<arrayrow.length; i++) {
    arrayrow[i] = arrayrow[i].split(" | ");
    }

  for (i=0; i<arrayrow.length; i++) { 
    trace(arrayrow[i]); // все ОК
    }
          _root.af = arrayrow; //присвоение       
};


etc 12.05.2007 13:27

Код в руте?

CorC 12.05.2007 13:54

Цитата:

Сообщение от turbine
Код:

_root.af = arrayrow; //присвоение

А не пробовали сразу же после этого потресить af?
Может вы его вызываете потом, но он не успел загрузить текстовик

turbine 12.05.2007 15:06

Да, код в руте.

etc 12.05.2007 15:13

А где попытка использования? Трейс _root.af сразу после присвоения что-то выдает?

turbine 12.05.2007 15:17

Попытки использовать/узнать:

1. trace(af) в самом LoadVars (выдает пустую строку)
2. следующий фрейм присвоение переменной text динамического текст. поля любого из элементов массива, например, второго (аf[2])

etc 12.05.2007 15:19

Почему trace(af), когда присвоение идет _root.af? В следующем фреймы данные ещёё не получены, я же говорил, загрузка асинхронна. Данные можно использовать после того, как сработает onLoad. А это происходит далеко не в следующем кадре, это время зависит от многих факторов, от скорости инета.

turbine 12.05.2007 15:29

Т.е. следует внутри функции отслеживать переменную success и завести еще какую-либо глобальную переменную? А кадре на втором поставить обработчик условия успешного присвоения переменных и до "успеха" крутить только 2 кадр, а после него перейти к 3-му?

etc 12.05.2007 16:42

Зачем? Поставить в первом кадре stop(). В обработчике onLoad можно вызвать play и играть дальше.


Часовой пояс GMT +4, время: 02:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.