Форум 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=122028)

gfdrf 28.02.2009 23:09

Цифры в LoadVars. Как правильно загрузить?
 
Всем доброго времени суток.
Снова, традиционно ламерский вопрос:
Есть задача, сделать смену картинок в ролике в зависимости от времени суток (день/ночь)
Желательно чтоб юзер сам задавал часы смены картинок.

Есть текстовый файл vars.txt следующего содержания:
Код:

dayhour=8&nighthour=20
Далее загружаем его, по окончаню загрузки создаем две переменные dh и nh
Код AS1/AS2:

var lv:LoadVars = new LoadVars();
lv.load("vars.txt");
 
lv.onLoad = function() {
        dh=lv.dayhour
        nh=lv.nighthour
};

Трейс выдает значения переменных как 8 и 20. Всё ОК
Далее пытаемся сравнивать с ними текущее время, и по результату сравнения задавать картинку для функции собственно загрузки картинки, её ресайза...

Собственно вопрос: Почему в таком вот варианте, цифра 20 опознается как 0?
Код AS1/AS2:

myhour = new Date();
newhours = myhour.getHours();
if(newhours>=dh&&newhours<=nh){;
newpicture="day.jpg";
}else{;
newpicture="night.jpg";
};

Соответственно если написать так:
Код AS1/AS2:

myhour = new Date();
newhours = myhour.getHours();
if(newhours>=8&&newhours<=20){;
newpicture="day.jpg";
}else{;
newpicture="night.jpg";
};

то всё работает как часы?
Я снова не понимаю какую то малость :(
В хелпе все примеры со строковыми переменными, поиск по форуму тоже выдает как правило вопросы или про URL в качестве параметров в тексте, или снова строки.
Что не так с цифрами то?

DarkLight 28.02.2009 23:37

parseInt/parseFloat преобразуют строку в число:
например так:
Код AS1/AS2:

nh=parseInt(lv.nighthour,10);


gfdrf 01.03.2009 00:02

Спасибо, попробовал.

НО не помогло. Ночь начинается не после 20 а после 0 по прежнему :(

Kuruki 01.03.2009 00:43

А почему вы решили, что после нуля? И выложите исходник посмотреть

gfdrf 01.03.2009 11:17

Вложений: 1
Прошу прощения, ступил вчера ночью...

С применением parseInt действительно всё работает правильно.
НО, все равно интересно:

Почему без parseInt, при сравнении, цифра 8 тем не менее, отрабатывается правильно, а цифра 20 упорно не хочет...

Исходник решил таки выложить, может кто то ещё заинтересуется.
Kuruki
как я решил что ночь начинается именно с 00-00, так очень просто, запускаю флэшку и перевожу системные часы. В 21-00 ещё не ночь (хотя уже должна бы), в 22 и в 23 тоже... а вот в 00, переключается.

И второй вопрос:
Можно ли файл с переменными сделать по типу ini файла, чтоб каждая переменная начиналась со своей строки.
Насколько я знаю, при загрузке из текстового файла, в нем не допускаются пробелы и переносы строки между переменными...
Что ещё (я имею ввиду именно формат файла) можно использовать для хранения переменных снаружи, чтоб он был поудобнее для пользователей.

Kuruki 01.03.2009 15:50

На момент вызова
Код AS1/AS2:

if(newhours>=dh&&newhours<=nh){

переменные dh и nh равны значению undefined, которое преобразуется в нуль при сравнении. Почему undefined? Потому что событие onLoad объекта LoadVars еще не наступило на момент вызова. А когда вы положили все это на onEnterFrame первые несколько раз было undefined, а потом файл с переменными загружался и значения брались уже от туда...

Цитата:

Что ещё (я имею ввиду именно формат файла) можно использовать для хранения...
.xml

gfdrf 02.03.2009 01:09

Kuruki
поспорю насчет undefined. Я всё понимаю про то что файл грузится не мгновенно. НО!
Я запускаю флэшку, и через минуту (ну он уж точно загрузился) я начинаю играть временем в системе. И происходит то, о что я спотыкался. Ночь наступает только в 0 часов.
Кстати я сделал переменные на разных строках. Всё работает.
Важно лишь чтоб было так:
Код:

variable1=
&variable2=
&variable3=


Kuruki 02.03.2009 01:42

Да, действительно после нуля...
Возможно без parseInt не dh преобразовывается в число, а newhours в строку и получается белиберда...

gfdrf 02.03.2009 12:23

Вобщем то я тоже так понял что он либо интерпретирует так, как ему заблагорассудится, либо в числе 20, он воспринимает только последнюю цифру.
Надо попробовать написать 21, не станет ли он воспринимать её как 1.


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

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