Просмотр полной версии : Проблемы с часиками - отстают
mixey_lv
20.12.2007, 01:00
Странная вещь происходит...
Я беру от сервера начальное время (unix time stamp) и пытаюсь заставить часики флэша тикать именно с этого времени, способ что я придумал оказался не верным... Часы отстают после достаточно коротокого интервала времени (5-7мин) на 5-6 секунд, т.е. если ждать еще - будет еще хуже. В чем проблема?
var lv:LoadVars = new LoadVars();
lv.load('http://localhost/clock/myscript.php');
lv.onLoad = function(success:Boolean) {
if (success) {
phpsec = parseInt(lv.unixtime);
server_time = new Date(phpsec*1000);
current_time = server_time;
intervalId = setInterval(executeCallback, 1000);
} else {
trace('грузимся');
}
};
function executeCallback():Void {
current_time = new Date(current_time.getTime() + 1000);
}
trace(getTimer());
показывает, что Callback вызывается не четко раз в секунду..
setInterval не гарантирует точность.
mixey_lv
20.12.2007, 01:12
А какие есть методы/способы, как заставить флэш часики пойти с определеного времени?
mixey_lv
20.12.2007, 01:23
new_date = new Date();
В new_date будет время взятое с компьютера пользователя.
А у меня есть необходимость брать точное время с сервера.
Т.е. получить время от сервера и сказать флэшу, что вот ПРАВИЛЬНОЕ время и работай с ним.
Хе хе. А с чего вы взяли, что серверное время сможите передать без ошибки? Это между прочим может сделать только довольно нехилый код. Ваще вам зачем это нужно?
2morrowMan
20.12.2007, 01:38
После того как приходит врема с сервера делаеш new_date = new Date(), вычисляеш разницу между ними time_offset = server_time - new_date.getTime(), и потом:
function executeCallback():Void {
var date:Date = new Date();
current_time = date.getTime() + time_offset; // может быть " - time_offset"
}
mixey_lv
20.12.2007, 01:39
Серверное время прекрасно передаётся через loadvars (мелкие задержки при передаче не в счет)
А нужно вот для чего. на сайте есть несколько пар часов, которые показывают время в разных часовых поясах. т.е. +/- сколько часов от серверного времени (это обязательное условие, брать время с сервера).
т.е. надо получить число/время сколько сейчас на сервере и потом от этого "плясать"
После того как приходит врема с сервера делаеш new_date = new Date(), вычисляеш разницу между ними time_offset = server_time - new_date.getTime(), и потом:
function executeCallback():Void {
var date:Date = new Date();
current_time = date.getTime() + time_offset; // может быть " - time_offset"
}
Спасибо! Очень интересная идея! сейчас попробую.
getTimezoneOffset(); или вроде того:
nowDate=new Date();
date1=nowDate.getUTCHours();
И делов то.
ЗЫ: а вот насчет время прекрасно передаётся через loadvars (мелкие задержки при передаче не в счет это вот не надо - ошибка конечно не час, но и не милисекунда.
mixey_lv
20.12.2007, 01:53
2 aksios: Да я согласен с Вами на счет ошибки и про getUTCHours() в курсе, но вот задача брать именно сервера время. т.к. сервер постоянно синхронизируется по точным часам, а вот компьютеры пользователей не всегда. Поэтому принимается, что в результате передачи времени от сервера оно будет точней чем с компьютера пользователя.
Спасибо еще раз 2morrowMan - задача решена
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.