![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Mar 2006
Сообщений: 7
|
Помогите разобраться с кодом.
Необходимо сделать часы на флеше, которые будут показывать время на сервере. Но к сожалению часы показывают локальное время. Не могу понять в чем дело. Начальное время на сервере он должен брать с пхп файла myscript.php Где ошибка? Код на Action script loadVariablesNum("myscript.php", 0);
time = new Date(loadVariablesNum);
hours = time.getHours();
if (hours>=24) {
hours = hours-24;
}
if (hours<12 and hours>=0) {
ampm = "AM";
} else {
ampm = "PM";
}
minutes = time.getMinutes();
seconds = time.getSeconds();
hours = hours*30+int(minutes/2);
minutes = minutes*6+int(seconds/10);
seconds = seconds*6;
Последний раз редактировалось iNils; 06.11.2007 в 20:08. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 28
|
Первое php-файл дает тебе string-тип, второе не используй конструкции getMinutes();и тп - они то тебе и возвращают время локальной машины, твоя задача проста получил string и и делай с ним что хочешь. Третье в твоем коде - часы покажут время того момента когда отработал код php - далее они будут стоять на месте - выход написать функцию, которая будет забирать с сервака данные по времени и вызывай ее через интервал, НО гонять постоянно данные между серваком и клиентом - в данном случае ни есть гуд. Вариант загрузи один раз данные с сервера, затем просчитай разницу между серверным и локальным временем - и выводи время локальной машины с поправкой на выше упомянутую разницу.
|
|
|||||
|
Регистрация: Mar 2006
Сообщений: 7
|
А что использовать вместо getMinutes()? В Экшн скрипт я чайник и не знаю как можно реализовать данную задачу. Можно как-нить поконкретнее в виде кода показать как?
|
|
|||||
|
Регистрация: Dec 2005
Сообщений: 28
|
Если тебе не горит, тогда сделаю это тебе к понедельнику, если работой не загрузят
|
|
|||||
|
Регистрация: Mar 2006
Сообщений: 7
|
Parker, спасиб тебе огроменный. Буду очень признательна если ты мне поможешь это сделать. Буду очень ждать.
![]() |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 28
|
slavna, ты извини не смог я сделать тебе исходник, работой загрузили, если еще нужно то как смогу сделаю. А так, попробуй загрузить переменные из твоего php файла, и попробуй поработать с ними. Тебе нужно во-первых, получить три переменные (используй loadVars). Далее получи локальное время - часы, минуты, секунды, затем высчитай разницу по ним с серверным временем, и затем выводи локальное время с поправкой на разницу (тут правда придется условия еще просчитывать - что б не получилось больше допустимых и отрицательных значений).
|
|
|||||
|
Регистрация: Dec 2005
Сообщений: 28
|
Вот держи код, который получат локальное время машины:
today = new Date();
dayhour = today.getHours();
dayminute = today.getMinutes();
daysecund = today.getSeconds();
//условия, чтобы время имело нормальный вид:
if (dayminute<10) {
dayminute = "0"+dayminute;
}
if(daysecund<10) {
daysecund = "0"+daysecund;
}
trace(dayhour+":"+dayminute+":"daysecund);
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
решили эту проблему?
выложите плз исходник |
|
|||||
|
Как по мне - код вобще бессмысленен. Всмысле - сплошная ошибка.
Если просто вывести текущее время на сервере: var tf=_root.createTextField("tf",_root.getNextHighestDepth(),10,10,300,20);
var my_lv:LoadVars=new LoadVars();
my_lv.load("myscript.php");
my_lv.onLoad=function(success){
if(success){
tf.text=dd(this.myhour)+":"+dd(this.mymin)+":"+dd(this.mysec);
}else{
tf.text="Не удается загрузить время с сервера.";
}
}
function dd(n){
return (n<10)?"0"+n:n;
}
Но это будет жрать лишний трафик и вобще - тупо =) Поэтому меняем код до такого: var dms:Number;
var tf=_root.createTextField("tf",_root.getNextHighestDepth(),10,10,300,20);
var my_lv:LoadVars=new LoadVars();
my_lv.load("myscript.php");
my_lv.onLoad=function(success){
if(success){
var mydate=new Date(0,0,0,this.myhour,this.mymin,this.mysec);
var localdate=new Date;
dms=mydate.getTime()-localdate.getTime();
updateDate();
setInterval(updateDate,1000);
}else{
tf.text="Не удается загрузить время с сервера.";
}
}
function dd(n){
return (n<10)?"0"+n:n;
}
function updateDate(){
var localdate=new Date();
localdate=new Date(localdate.getTime()+dms);
tf.text=dd(localdate.getHours())+":"+dd(localdate.getMinutes())+":"+dd(localdate.getSeconds());
}
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
а как это будет работать для аналоговых часов?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|