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

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

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

Регистрация: Aug 2009
Сообщений: 38
По умолчанию Таймер обратный отсчет, привязка к серверному времени

Здравствуйте!

Имеется код, код понятен !
Код AS3:
var count:Number = 60;
 
var myTimer:Timer = new Timer(1000,count);
 
myTimer.addEventListener(TimerEvent.TIMER, countdown);
 
myTimer.start();
 
function countdown(event:TimerEvent):void {
myText_txt.text = String((count)-myTimer.currentCount);
}
Приложение по типу аукциона, т.е сколько осталось до окончания ставки.

Отталкиваться буду от серверного времени (time()), как достать значение и передать во флеш тоже знаю.

Ведь для правильной-логической работы таймера у всех пользователей отсчет времени должен быть одинаков, т.е не +3 секунды у одного, -2 секунды у другого. Тут встал вопрос... загрузка приложения у всех будет по разному, разумеется чтобы достать значение уйдет время, боюсь что таймер у всех будет запаздывать по разному.

моя реализация...
загружать время сервера с сервера(A), так же загружать время окончания тендера(B).

потом учитывать разность ... B-A

Код AS3:
var count:Number = 60;
надеюсь понятно объяснил.
Спасибо!


Последний раз редактировалось Oli Short; 19.11.2009 в 16:07.
Старый 19.11.2009, 16:07
Artic вне форума Посмотреть профиль Найти все сообщения от Artic
  № 2  
Ответить с цитированием
Artic
Banned

Регистрация: Jun 2009
Сообщений: 298
в чем суть топика ?

PS "Приложение по типу аукциона" не делаются на флашь

Старый 19.11.2009, 16:39
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 3  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
загвостка

Цитата:
Ведь для правильной-логической работы таймера у всех пользователей отсчет времени должен быть одинаков, т.е не +3 секунды у одного, -2 секунды у другого. Тут встал вопрос... загрузка приложения у всех будет по разному, разумеется чтобы достать значение уйдет время, боюсь что таймер у всех будет запаздывать по разному.
почему не делается? в том же контакте уже есть подобные реализации

Старый 20.11.2009, 10:13
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
начальная установка
клиент дай время -
сервер 9.59

опрос:
клиент - моё время 10.00
сервер - моё 10.02
клиент - ага разница 2 секунды /2 = 1 секунда
устанавливаем время на 10.03
...
клиент моё время 10.05
сервер моё - 10.09
клиент: ага разница 4 секунды /2= 2
устанавливаем время на 10.11
Код AS3:
package  
{
	/**
	 * Синхронизация с серверным таймером
	 * @author k0t0vich
	 */
	public class SynchroTimer
	{
		private var delta:int;
		private var answerTime:int;
		private var syncTime:int;
		private var savedTime:int;
 
		/**
		 * обработчик данных от сервера - начальное время
		 * @param	serverTime
		 */
		public function onStartTime(serverTime:int)
		{
			syncTime = serverTime;
			savedTime = getTimer();
		}
 
 
 
		/**
		 * обработчик данных от сервера - текущее время
		 * @param	serverTime
		 */
		public function onServerTime(serverTime:int):void
		{
				delta = (serverTime-answerTime)/2;
				syncTime = serverTime + delta;
				savedTime = getTimer();
		}
 
 
		/**
		 * Текущее синхронизированное время
		 */
		public function get time():int
		{
			var ret:int = getTimer() - savedTime + syncTime;
			return ret;
		}
 
		public function getServerTime():void
		{
			answerTime = time;
			///// послыаем запрос на сервер 
			//..
		}
 
		public function getSatrtServerTime():void
		{
			answerTime = getTimer();
			///// послыаем запрос на сервер 
			//..
		}
 
	}
 
}
в этой схеме предполагается что вопрос и ответ шлются одинаковое время, что на самом деле не всегда правда, но такая схема позволяет немного нивелировать ошибку, да и разница в 1-2 секунды в случае аукциона наверное не очень существенна, хотя в каких нибудь реалтайм стрелалках прилиична, но в этом случае поможет только сокет.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 20.11.2009 в 10:47.
Старый 20.11.2009, 20:08
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 5  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
в принципе и не большая разница застоя
http://vprokate.zxq.net/i.swf

3 милиссекунды

Старый 23.11.2009, 10:26
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Ну на такие тесты полагаться не стоит. Реальные задержки (особенно при передаче и подготовке данных на сервере) могут составлять до 5 секунд. Хотя это тоже зависит от сервера.
__________________
Отряд Котовскага

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

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

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


 


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


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