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

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

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

Регистрация: Mar 2006
Сообщений: 7
Question Помогите разобраться с кодом:серверное время

Помогите разобраться с кодом.
Необходимо сделать часы на флеше, которые будут показывать время на сервере.
Но к сожалению часы показывают локальное время. Не могу понять в чем дело.
Начальное время на сервере он должен брать с пхп файла myscript.php
Где ошибка?
Код:
<?php 
echo "&myhour=".date("H")."&mymin=".date("i")."&mysec=".date("s"); 
?>
Код на 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.
Старый 24.03.2006, 10:03
Parker вне форума Посмотреть профиль Отправить личное сообщение для Parker Найти все сообщения от Parker
  № 2  
Ответить с цитированием
Parker

Регистрация: Dec 2005
Сообщений: 28
Первое php-файл дает тебе string-тип, второе не используй конструкции getMinutes();и тп - они то тебе и возвращают время локальной машины, твоя задача проста получил string и и делай с ним что хочешь. Третье в твоем коде - часы покажут время того момента когда отработал код php - далее они будут стоять на месте - выход написать функцию, которая будет забирать с сервака данные по времени и вызывай ее через интервал, НО гонять постоянно данные между серваком и клиентом - в данном случае ни есть гуд. Вариант загрузи один раз данные с сервера, затем просчитай разницу между серверным и локальным временем - и выводи время локальной машины с поправкой на выше упомянутую разницу.

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

Регистрация: Mar 2006
Сообщений: 7
А что использовать вместо getMinutes()? В Экшн скрипт я чайник и не знаю как можно реализовать данную задачу. Можно как-нить поконкретнее в виде кода показать как?

Старый 24.03.2006, 13:35
Parker вне форума Посмотреть профиль Отправить личное сообщение для Parker Найти все сообщения от Parker
  № 4  
Ответить с цитированием
Parker

Регистрация: Dec 2005
Сообщений: 28
Если тебе не горит, тогда сделаю это тебе к понедельнику, если работой не загрузят

Старый 24.03.2006, 13:40
slavna вне форума Посмотреть профиль Отправить личное сообщение для slavna Найти все сообщения от slavna
  № 5  
Ответить с цитированием
slavna

Регистрация: Mar 2006
Сообщений: 7
Parker, спасиб тебе огроменный. Буду очень признательна если ты мне поможешь это сделать. Буду очень ждать.

Старый 27.03.2006, 08:53
Parker вне форума Посмотреть профиль Отправить личное сообщение для Parker Найти все сообщения от Parker
  № 6  
Ответить с цитированием
Parker

Регистрация: Dec 2005
Сообщений: 28
slavna, ты извини не смог я сделать тебе исходник, работой загрузили, если еще нужно то как смогу сделаю. А так, попробуй загрузить переменные из твоего php файла, и попробуй поработать с ними. Тебе нужно во-первых, получить три переменные (используй loadVars). Далее получи локальное время - часы, минуты, секунды, затем высчитай разницу по ним с серверным временем, и затем выводи локальное время с поправкой на разницу (тут правда придется условия еще просчитывать - что б не получилось больше допустимых и отрицательных значений).

Старый 27.03.2006, 09:02
Parker вне форума Посмотреть профиль Отправить личное сообщение для Parker Найти все сообщения от Parker
  № 7  
Ответить с цитированием
Parker

Регистрация: 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);

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

Регистрация: Oct 2006
Сообщений: 44
решили эту проблему?
выложите плз исходник

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

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Как по мне - код вобще бессмысленен. Всмысле - сплошная ошибка.

Если просто вывести текущее время на сервере:

Код:
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;
}
Если нужно обновлять показания часов, можно просто синхронизировать время от времени с сервером, поставив интервал
Код:
setInterval(my_lv,"load",1000);
Но это будет жрать лишний трафик и вобще - тупо =)

Поэтому меняем код до такого:

Код:
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());
}
Что будет обновлять показания таймера раз в секунду, в зависимости от того - какое время вернул пхп скрипт.

Старый 09.11.2007, 18:12
zlibeg вне форума Посмотреть профиль Отправить личное сообщение для zlibeg Найти все сообщения от zlibeg
  № 10  
Ответить с цитированием
zlibeg

Регистрация: Oct 2006
Сообщений: 44
а как это будет работать для аналоговых часов?

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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