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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2009, 20:06
rooty вне форума Посмотреть профиль Отправить личное сообщение для rooty Найти все сообщения от rooty
  № 1  
Ответить с цитированием
rooty
[+4 12.12.07]

Регистрация: Dec 2007
Сообщений: 14
По умолчанию Передача даты

Здравствуйте.

Возникла следующая проблема:
Необходимо создать обратный отсчет от заданной даты. Дату можно получить только через Flashvars.. Тот пример, который нашел в поиске дату не понимает, точнее, я не понимаю, как её туда передать..

Код AS1/AS2:
//
var interval:Object = {};
//
var new_year_day = new Date(2009,11,17,18,40,00); // наш новый год. или какой там он уж будет нужен на день прочтения этого текста.
AsBroadcaster.initialize(Date.prototype); // инициализируем объект ДАТА... неважно что это значит :)
new_year_day.addListener(this); // добавляем на прослушку обновлений.
//
var sec_count = 0;
//
interval.id = setInterval(function () {
	sec_count += 1000;
	if (_root.now_time != undefined && _root.now_time != null) {
		var now = new Date(_root.now_time*1000+sec_count);
		//	задаем время с сервера
		//(это если хитрый юзер захочет поменять системное время у себя на компе и до срока посмотреть что будет).
	} else {
		var now = new Date();
		// Это сиюминутная дата. тоесть сейчас. если не задано с сервера.
	}
	var d:Number = Math.floor((new_year_day.getTime()-now.getTime())/86400000);
	//86400000 - милисекунд в сутках
	// подсчет разницы
	var a:Number = Math.abs(new_year_day.getHours()-now.getHours());
	var b:Number = Math.abs(new_year_day.getMinutes()-now.getMinutes());
	var c:Number = Math.abs(new_year_day.getSeconds()-now.getSeconds());
 
	var h:Number = Math.abs(a);
	var m:Number = Math.abs(b);
	var s:Number = Math.abs(59-c);
	// транслируем событие обновления (сейчас-до НГ)
	now.broadcastMessage("updateTime", d, h, m, s);
	if (d<0) {
		// С Новым Годом!!
		now.broadcastMessage("OnNewYearCome");
		clearInterval(interval.id);
		// все хватит. отсчитали.
	}
}, 1000, this);
//
// Это я думаю можно оставить без комментариев.
this.updateTime = function(d, h, m, s) {
	// поскольку это не литературынй вечер, то уж как есть без склонения обойдемся.
	var str = "До Новго 2007 Года осталось "+d+"дня, "+h+" часа "+m+" минут и "+s+" секунд.";
	//trace(str);
	txt.text = str;
};
this.OnNewYearCome = function() {
	//с этого места можно запускать зайчиков, белочек, феерверки и Дед Мороза на санках.
	txt.text = "Здравствуй йолка новый год!";
};
// Готово
Как бы значение 2009,11,17,18,40,00 передать через переменную?
То есть надо сделать как-то так:

t=2009,11,17,18,40,00
var new_year_day = new Date(t);

только такая конструкция не работает.. Помогите, пожалуйста..

Добавлено через 2 часа 25 минут
ну, или, может предложите другой какой вариант, как можно сделать..

Надо сделать счетчик "Осталось времени:". Через флэшварс можем получить дату и время, которые еще не наступили. Нужно чтоб счетчик показывал разницу между текущим временем и датой из флэшварс..
Ну и было бы совсем хорошо, если бы текущую дату он брал с сервера, а не с клиента..

Просто совсем не понятно, что делать с датой, полученной из флэшварс..


Последний раз редактировалось rooty; 17.12.2009 в 20:23.
Старый 18.12.2009, 00:29
veles2008 вне форума Посмотреть профиль Отправить личное сообщение для veles2008 Найти все сообщения от veles2008
  № 2  
Ответить с цитированием
veles2008
 
Аватар для veles2008

Регистрация: Sep 2008
Сообщений: 158
Код AS1/AS2:
yourDate = new Date(2010, 0, 1);
yourDateMsec = yourDate.getTime();
 
F_countDown = function () {
nowDate = new Date();
nowDateMsec = nowDate.getTime();
var msec = yourDateMsec-nowDateMsec;
if (msec<=0) {
 
 
} else {
 
 var sec = Math.floor(msec/1000);
  var min = Math.floor(sec/60);
  var hour = Math.floor(min/60);
  var day = Math.floor(hour/24);
  sec %= 60;
  min %= 60;
  hour %= 24;
  time_txt.text = " До Нового года осталось: Дней: "+day+", Часов: "+hour+", Минут: "+min+", Секунд: "+sec;
}
};
interval = setInterval(F_countDown, 1000);
F_countDown();

Старый 18.12.2009, 02:16
rooty вне форума Посмотреть профиль Отправить личное сообщение для rooty Найти все сообщения от rooty
  № 3  
Ответить с цитированием
rooty
[+4 12.12.07]

Регистрация: Dec 2007
Сообщений: 14
veles2008, спасибо!
Только.. все равно непонятно, куда значение из Flashvars подставлять..

yourDate = new Date(2010, 0, 1);

Как сюда подставить нужную дату? Чтоб не руками вписывать, а через переменную?
Допустим, в переменной t содержится дата в таком формате 2009,11,17,18,40,00..
Как этой переменной пользоваться?

t=2009,11,17,18,40,00.. ее в new Date не подставить

Если дату руками вписывать - то все отлично работает, но если мы получаем дату из кода страницы, на которой отображен ролик? Новый год тут не при чем..

В Flashvars задается дата (она может быть разной, но больше текущей) и таймер должен считать, сколько до нее осталось времени..

Старый 18.12.2009, 07:01
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 4  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Используйте .split(",") к дате, которую получили, функция вернет массив значений - год, месяц, число и так далее, потом подставляйте в new Date()

Код AS1/AS2:
var myDate = "2010,0,1"; // берем дату
var dates = myDate.split(","); // делим по запятым
var yourDate = new Date(dates[0], dates[1], dates[2]); // подставляем значения
Только учтите, что значение myDate должно быть без пробелов.
__________________
hauts.ru


Последний раз редактировалось Hauts; 18.12.2009 в 07:04.
Старый 18.12.2009, 15:58
veles2008 вне форума Посмотреть профиль Отправить личное сообщение для veles2008 Найти все сообщения от veles2008
  № 5  
Ответить с цитированием
veles2008
 
Аватар для veles2008

Регистрация: Sep 2008
Сообщений: 158
Наверное так
Вложения
Тип файла: rar 1.rar (8.0 Кб, 66 просмотров)

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

Регистрация: Sep 2008
Сообщений: 158
там с 2010 года нужно начинать. При желании поменяете

Старый 18.12.2009, 16:37
rooty вне форума Посмотреть профиль Отправить личное сообщение для rooty Найти все сообщения от rooty
  № 7  
Ответить с цитированием
rooty
[+4 12.12.07]

Регистрация: Dec 2007
Сообщений: 14
СПАСИБО!!
ОЧЕНЬ помогли (прошу прощения за капс, действительно очень рад ). Собрал написанный вами код - все заработало

Только осталось два вопроса:
1. veles2008, не открыть исходник вашего примера.. Какая версия Флэш нужна? Я до сих пор 8-ой пользуюсь..
2. Есть ли возможность считать разницу с временем сервера?.. Т.е. "полученная из флэшварс дата" минус "текущая дата сервера".. Просто если будет браться клиентское время - то разница получится разной у клиента из Владивостока и у клиента из Москвы, однако действие над sql-базой произойдет ровно по времени сервера.. Соответственно, один из клиентов будет обманут.. часов на 10..

Старый 18.12.2009, 16:46
veles2008 вне форума Посмотреть профиль Отправить личное сообщение для veles2008 Найти все сообщения от veles2008
  № 8  
Ответить с цитированием
veles2008
 
Аватар для veles2008

Регистрация: Sep 2008
Сообщений: 158
1. Повтор для 8
2. Конечно с сервера
Вложения
Тип файла: rar 1.rar (7.6 Кб, 46 просмотров)

Старый 03.03.2010, 18:44
rooty вне форума Посмотреть профиль Отправить личное сообщение для rooty Найти все сообщения от rooty
  № 9  
Ответить с цитированием
rooty
[+4 12.12.07]

Регистрация: Dec 2007
Сообщений: 14
Эх.. ну вот, долго ли-коротко ли, но пришло время выложить сей мувик на сервер..
И, к сожалению, работает не так, как нужно

Вот код, который получился:

Код AS1/AS2:
var myDate = _level0.time_over; // берем дату
var dates = myDate.split(","); // делим по запятым
var yourDate = new Date(dates[0], dates[1], dates[2], dates[3], dates[4], dates[5]); // подставляем значения
yourDateMsec = yourDate.getTime();
 
F_countDown = function () {
nowDate = new Date();
 
nowDateMsec = nowDate.getTime();
var msec = yourDateMsec-nowDateMsec;
if (msec<=0) { 
setProperty ("txt", _visible, false);  
setProperty ("line", _visible, false); 
} else {
setProperty ("txt", _visible, true);
setProperty ("line", _visible, true);
 var sec = Math.floor(msec/1000);
 var min = Math.floor(sec/60);
 var hour = Math.floor(min/60);
 var day = Math.floor(hour/24);
 sec %= 60;
 min %= 60;
 hour %= 24;
 txt.text = "Осталось: "+day+" дней, "+hour+" часов, "+min+" минут, "+sec+" секунд"; 
}
};
interval = setInterval(F_countDown, 1000);
F_countDown();
Помогите, люди добрые, подскажите:
Почему на локальном компе работает отлично.. А, вот, при просмотре с сервера - не показывает line и txt?


Последний раз редактировалось rooty; 05.03.2010 в 11:49.
Старый 03.03.2010, 22:49
Maximer вне форума Посмотреть профиль Отправить личное сообщение для Maximer Найти все сообщения от Maximer
  № 10  
Ответить с цитированием
Maximer

Регистрация: Jan 2010
Сообщений: 25
Код AS1/AS2:
setProperty ("txt", _visible, false);
попробуйте так
Код AS1/AS2:
txt._visible = false;
//или
_root.txt._visible = false;
впринципе одно и то же, но может поможет...


Последний раз редактировалось Maximer; 03.03.2010 в 22:52.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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