Просмотр полной версии : аналоговые часы с подгрузкой времени с сервера и чтоб стрелки вертелись
Помогите пожалуйста?! :)
Мне нужны аналоговые часы с подгрузкой времени с сервера и чтоб стрелки вертелись.
Eсть PHP файл time.php с кодом:
<?php
echo 'theTime='.urlencode(date('g:i:s A')).'&theHour='.urlencode(date('g')).'&theMinutes='.urlencode(date('i')).'&theSeconds='.urlencode(date('s')).'&amORpm='.urlencode(date('A'));
?>
Есть код для Flash:
myVars = new LoadVars();
myVars.load("http://yourserver.com/time.php");
myVars.onLoad = function(success) {
if (success) {
trace("variables loaded");
trace(this.theTime);
trace(this.theHour);
trace(this.theMinutes);
trace(this.theSeconds);
trace(this.amORpm);
} else {
trace("Error loading page");
}
};
time = theTime();// time object
seconds = theSeconds();
minutes = theMinutes();
hours = theHour();
hours = hours+(minutes/60);
seconds = seconds*6;// calculating seconds
minutes = minutes*6;// calculating minutes
hours = hours*30;// calculating hours
sec._rotation = seconds;// giving rotation property
min._rotation = minutes;// giving rotation property
hour._rotation = hours;// giving rotation property
Время выводит на Output пример: 11:49:57 AM
Вот стрелки не крутятся совсем.
Заранее спасибо!
Для оформления своего кода надо использовать теги (http://www.flasher.ru/forum/showthread.php?t=122539)
Ну нужно же непрерывно получать данные и непрерывно их выводить.
Типа такого:
setInterval (loadTime, 500);
function loadTime () {
myVars.load('http://yourserver.com/time.php');
}
Видимо, в примере за кадром остались также функции theTime() и прочие.
Все действия по выводу можно писать либо отдельно также где-нибудь с помощью еще одного setInterval, а можно даже внутри loadTime.
Если что, можно поднять частоту, уменьшив интервал с 500, например до 100, правда не уверен, что такая частота запросов скрипта - хорошо с точки зрения нагрузки на сервер.
Мысль еще такая есть - может быть просто сделать один запрос на серверное время, сравнить его со временем на локальной машине пользователя и выводить время, основываясь на времени клиентской машины (с помощью getTime), но с коррекцией, основанной на сервеном времени (учесть разницу).
PS. Кстати, что значит "аналоговые"?
Аналоговые часы - это часы со стрелками
mooncar
Загрузки 1 раз будет недостаточно ? :)
помогите плз в соседней теме.
Если вам нужна актуальная информация о времени, то ее и получать нужно с требуемой частотой. Разве это не очевидно?
Хотелось бы посмотреть на код полностью так как во Flash я почти полный ноль (
Хотелось бы посмотреть на код полностью так как во Flash я почти полный ноль (
На какой код вы хотите взглянуть? Вроде вы сами написали "есть код для Flash".
Судя по нему, вам нужно нарисовать стрелки sec, min и hour, и поместить
вот этот блок в подинтервальную функцию:
hours = hours+(minutes/60);
seconds = seconds*6;// calculating seconds
minutes = minutes*6;// calculating minutes
hours = hours*30;// calculating hours
sec._rotation = seconds;// giving rotation property
min._rotation = minutes;// giving rotation property
hour._rotation = hours;// giving rotation property
И еще понять, что подразумевается в приведенном вами куске кода вот здесь
time = theTime();// time object
и далее... что это за функции? Они не приводятся.
Скорее всего в них осуществляется перевод полученных с сервера данных в целочисленные значения AS, которые и используются для дальнейших вычислений:
myVars.onLoad = function(success) {
if (success) {
hours = Number(this.theHour);
minutes = Number(this.theMinutes);
seconds = Number(this.theSeconds);
}
};
rainbowrussia
02.06.2010, 04:52
Если вам нужна актуальная информация о времени, то ее и получать нужно с требуемой частотой. Разве это не очевидно?
Ну зачем же. Достаточно получить 1 раз "базовое" время, затем остается только к нему добавлять getTimer(). Вероятностью аномального течение системного времени на компьютере пренебрегаем.
Но если нужно очень высокая точность синхронизации, то тут нужно делать несколько запросов, вычислять время задержки ответа от сервера и тд. Рядом есть тема про дату - http://www.flasher.ru/forum/showthread.php?p=912440 Задачи похожие - отсчитывать время от заданного.
rainbowrussia, я об этом и говорил
Мысль еще такая есть - может быть просто сделать один запрос на серверное время, сравнить его со временем на локальной машине пользователя и выводить время, основываясь на времени клиентской машины (с помощью getTime), но с коррекцией, основанной на сервеном времени (учесть разницу).
А насчет актуальности - пытался просто донести мысль до автора, что один раз сделать запрос недостаточно, информацию надо обновлять - даже с помощью getTimer() или getTime() она все равно нуждается в актуализации.
У него же первое затруднение вызвало то, что информация в приведенном коде не обновляется.
myVars = new LoadVars();
myVars.load("http://localhost/peaceclock_site/time.php");
myVars.onLoad = function(success) {
if (success) {
trace("variables loaded");
trace(this.theTime);
trace(this.theHour);
trace(this.theMinutes);
trace(this.theSeconds);
trace(this.amORpm);
} else {
trace("Error loading page");
}
};
time=theTime(); // time object
seconds = theSeconds()
minutes = theMinutes()
hours = theHour()
hours = hours + (minutes/60);
seconds = seconds*6; // calculating seconds
minutes = minutes*6; // calculating minutes
hours = hours*30; // calculating hours
sec._rotation=seconds; // giving rotation property
min._rotation=minutes; // giving rotation property
hour._rotation=hours; // giving rotation property
Значит этот код ваще не будет работать? )
Думал может здесь ошибка какая-то
Надо будет искать другой скрипт?
rainbowrussia
02.06.2010, 23:59
rainbowrussia, я об этом и говорил
Прошу прощения, пропустил этот момент.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.