Форум 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)
-   -   Достать переменные из файла (http://www.flasher.ru/forum/showthread.php?t=139795)

prokopoffmusic 11.05.2010 19:13

Достать переменные из файла
 
в файле лежат пременные в таком виде:
time=15:10&name=Иван&id=123

нужно вывести в поле mbox переменные в формате time - name (id)

пишу
Код AS1/AS2:

var mbox = time - name (id);

во флешке пишет "undefined"

подскажите, как задать значение переменной?
если можно поподробней, я программирую всего неделю)

mooncar 11.05.2010 19:24

Как вы загружаете данные из файла?
Откройте хелп и посмотрите примеры для класса LoadVars.

Потом, когда разберетесь с этим, у вас должно получиться нечто следующее:
Код AS1/AS2:

var lv:LoadVars = new LoadVars();
 
lv.onLoad = function  (success:Boolean)
{
        if (success)
        {
                trace('Данные загружены');
                var vtime:String = this.vtime;
                var vname:String = this.vname;
                var id:String = this.id;
                mbox.text = vtime + '-' +  vname + '(' + id + ')';
        }
}
lv.load('file.txt'); //если файл лежит рядом

Настоятельно рекомендую поменять имена time и name на другие, как это сделал я, это служебные слова, могут быть неприятности.
Код:

vtime=15:10&vname=Иван&id=123
Если сразу не получится, потрейсите внутри обработчика:
Код AS1/AS2:

trace(this.vtime)

и т.д, чтобы понять, происходит вообще загрузка и разбор данных или нет.

prokopoffmusic 11.05.2010 19:31

Загружаю вот так:

Код AS1/AS2:

setInterval(function () {
loadVariables("base.txt", _root);
},200);

верно?

Добавлено через 5 минут
Всё, разобрался! Спасибо!

mooncar 11.05.2010 19:40

Нет, не верно. Я же написал как делается.
Никаких loadVariables и тем более с setInterval ! Это бред.
Такая конструкция имела право на жизнь лет 6-7 назад, если не больше.

prokopoffmusic 11.05.2010 19:41

а как тогда без setInterval сделать чтобы иформация в поле mbox обновлялась?

mooncar 11.05.2010 19:45

Цитата:

Сообщение от prokopoffmusic (Сообщение 907503)
а как тогда без setInterval сделать чтобы иформация в поле mbox обновлялась?

Про обновление вы ничего не писали. Я писал, что бредово использовать связку устаревшего и непригодного loadVariables и вполне себе рабочей лошадки setInterval.

Тогда так:
Код AS1/AS2:

var lv:LoadVars = new LoadVars();
 
lv.onLoad = function  (success:Boolean)
{
        if (success)
        {
                trace('Данные загружены');
                var vtime:String = this.vtime;
                var vname:String = this.vname;
                var id:String = this.id;
                mbox.text = vtime + '-' +  vname + '(' + id + ')';
        }
}
 
function loadFile ()
{
        lv.load('base.txt');
}
 
var lf:Number = setInterval(loadFile, 200);

PS. Еще вот что. Сохраняйте ваш base.txt в кодировке UTF-8 во избежание граблей, на которые многие встают.

prokopoffmusic 11.05.2010 20:05

Цитата:

Сохраняйте ваш base.txt в кодировке UTF-8
Никак иначе! :)

что-то обновление не происходит...

mooncar 11.05.2010 20:12

Вы на сайте тестите или в среде разработки?

Добавлено через 3 минуты
Если на сайте, то пишите так:
Код AS1/AS2:

lv.load('base.txt?' + Math.random());

— этим избегается кэширование base.txt браузером.

prokopoffmusic 11.05.2010 20:23

нет, не на сайте, локально запускаю swf-ку, меняю содержимое файла base.txt, а обновление не происходит.
причем таким вот образом всё работало
Код AS1/AS2:

messageURL = "base.txt";
setInterval(function () {
loadVariables(messageURL, _root);
},100);

но так переменные не вытащить

mooncar 11.05.2010 20:30

Вложений: 1
Все нормально работает.


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

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