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

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

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

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
По умолчанию Проблемы с часиками - отстают

Странная вещь происходит...
Я беру от сервера начальное время (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 вызывается не четко раз в секунду..
__________________



Последний раз редактировалось mixey_lv; 20.12.2007 в 01:07.
Старый 20.12.2007, 01:10
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
setInterval не гарантирует точность.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.12.2007, 01:12
mixey_lv вне форума Посмотреть профиль Отправить личное сообщение для mixey_lv Найти все сообщения от mixey_lv
  № 3  
Ответить с цитированием
mixey_lv
 
Аватар для mixey_lv

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
А какие есть методы/способы, как заставить флэш часики пойти с определеного времени?
__________________


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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Не понял вопроса.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.12.2007, 01:23
mixey_lv вне форума Посмотреть профиль Отправить личное сообщение для mixey_lv Найти все сообщения от mixey_lv
  № 5  
Ответить с цитированием
mixey_lv
 
Аватар для mixey_lv

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
Код:
new_date = new Date();
В new_date будет время взятое с компьютера пользователя.
А у меня есть необходимость брать точное время с сервера.
Т.е. получить время от сервера и сказать флэшу, что вот ПРАВИЛЬНОЕ время и работай с ним.
__________________


Старый 20.12.2007, 01:33
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 6  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Хе хе. А с чего вы взяли, что серверное время сможите передать без ошибки? Это между прочим может сделать только довольно нехилый код. Ваще вам зачем это нужно?

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

Регистрация: Aug 2007
Сообщений: 467
После того как приходит врема с сервера делаеш 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"
}

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

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
Серверное время прекрасно передаётся через loadvars (мелкие задержки при передаче не в счет)

А нужно вот для чего. на сайте есть несколько пар часов, которые показывают время в разных часовых поясах. т.е. +/- сколько часов от серверного времени (это обязательное условие, брать время с сервера).

т.е. надо получить число/время сколько сейчас на сервере и потом от этого "плясать"

Цитата:
Сообщение от 2morrowMan
После того как приходит врема с сервера делаеш 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"
}
Спасибо! Очень интересная идея! сейчас попробую.
__________________



Последний раз редактировалось iNils; 20.12.2007 в 02:35.
Старый 20.12.2007, 01:49
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 9  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Код:
getTimezoneOffset();
или вроде того:
Код:
nowDate=new Date();
date1=nowDate.getUTCHours();
И делов то.
ЗЫ: а вот насчет
Цитата:
время прекрасно передаётся через loadvars (мелкие задержки при передаче не в счет
это вот не надо - ошибка конечно не час, но и не милисекунда.

Старый 20.12.2007, 01:53
mixey_lv вне форума Посмотреть профиль Отправить личное сообщение для mixey_lv Найти все сообщения от mixey_lv
  № 10  
Ответить с цитированием
mixey_lv
 
Аватар для mixey_lv

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
2 aksios: Да я согласен с Вами на счет ошибки и про getUTCHours() в курсе, но вот задача брать именно сервера время. т.к. сервер постоянно синхронизируется по точным часам, а вот компьютеры пользователей не всегда. Поэтому принимается, что в результате передачи времени от сервера оно будет точней чем с компьютера пользователя.


Спасибо еще раз 2morrowMan - задача решена
__________________



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

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

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


 


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


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