Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.02.2009, 23:09
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 1  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
По умолчанию Цифры в 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 в качестве параметров в тексте, или снова строки.
Что не так с цифрами то?

Старый 28.02.2009, 23:37
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
parseInt/parseFloat преобразуют строку в число:
например так:
Код AS1/AS2:
nh=parseInt(lv.nighthour,10);
__________________
4am is time to rock

Старый 01.03.2009, 00:02
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 3  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
Спасибо, попробовал.

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

Старый 01.03.2009, 00:43
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 4  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
А почему вы решили, что после нуля? И выложите исходник посмотреть

Старый 01.03.2009, 11:17
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 5  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
Прошу прощения, ступил вчера ночью...

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

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

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

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

Старый 01.03.2009, 15:50
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 6  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
На момент вызова
Код AS1/AS2:
if(newhours>=dh&&newhours<=nh){
переменные dh и nh равны значению undefined, которое преобразуется в нуль при сравнении. Почему undefined? Потому что событие onLoad объекта LoadVars еще не наступило на момент вызова. А когда вы положили все это на onEnterFrame первые несколько раз было undefined, а потом файл с переменными загружался и значения брались уже от туда...

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

Старый 02.03.2009, 01:09
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 7  
Ответить с цитированием
gfdrf

Регистрация: Mar 2006
Сообщений: 92
Kuruki
поспорю насчет undefined. Я всё понимаю про то что файл грузится не мгновенно. НО!
Я запускаю флэшку, и через минуту (ну он уж точно загрузился) я начинаю играть временем в системе. И происходит то, о что я спотыкался. Ночь наступает только в 0 часов.
Кстати я сделал переменные на разных строках. Всё работает.
Важно лишь чтоб было так:
Код:
variable1=
&variable2=
&variable3=

Старый 02.03.2009, 01:42
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 8  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Да, действительно после нуля...
Возможно без parseInt не dh преобразовывается в число, а newhours в строку и получается белиберда...

Старый 02.03.2009, 12:23
gfdrf вне форума Посмотреть профиль Отправить личное сообщение для gfdrf Найти все сообщения от gfdrf
  № 9  
Ответить с цитированием
gfdrf

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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