Игра начинает обратный отсчет по времени сервера - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть игра, и когда игрок нажимает кнопку воспроизведения, начинается обратный отсчет, и игра начинается, когда отсчет достигает нуля. Проблема в том, что он отсчитывает время от компьютера и компьютера, а разница в секундах от компьютера к компьютеру приводит к запуску игроков в разное время.

Можно ли отсчитывать отсчет времени до времени сервера, чтобы синхронизировать игроков, чтобы все начинали одновременно?

Код написан в actionscript3.0 и Flash cs5.5 предоставленный код в настоящее время ведет обратный отсчет оставшимися секундами ОС текущего минимума, поэтому, если их 30 секунд осталось в текущем мин, то происходит обратный отсчет 30 секунд time1 в моей базе данных 60 между 60 играми. Любая помощь будет более чем оценена заранее спасибо Дэйв

var timer4:Timer = new Timer(1000);
timer4.addEventListener(TimerEvent.TIMER, tick4);
timer4.start();
function tick4(e:TimerEvent):void{
var request:URLRequest = new URLRequest("timerma2.php");
request.method = URLRequestMethod.GET;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandlert);

loader.load(request);
function completeHandlert(e:Event) {
var time1 = e.target.data.time1;
var pattern = e.target.data.pattern;
var frames = e.target.data.frames;

var currentYear:Number = new Date().fullYear;
var targetDate:Date = new Date(currentYear, 11, 50);

addEventListener(Event.ENTER_FRAME, loop);

function loop(e:Event):void{

    var now:Date = new Date();

var timeLeft:Number = targetDate.getTime() - now.getTime();

var sec:Number = Math.floor(timeLeft/1000);
var min:Number = Math.floor(sec/60);


sec = sec % 60;
min = min % time1;

mintxt.text = (min < 10) ? "0"+min.toString() : min.toString();
sectxt.text = (sec < 10) ? "0"+sec.toString() : sec.toString();

 if (min == 0 && sec == 0){
     theframe();

     function theframe(){


         if (frames == 4){

    gotoAndStop (4); 


      timer4.removeEventListener(TimerEvent.TIMER, tick4);
     removeEventListener(TimerEvent.TIMER, loop);


     }

1 Ответ

1 голос
/ 09 декабря 2011

Лучший способ синхронизировать все - подключить игру к серверу с помощью сокетов и передать отсчет времени всем подключенным игрокам ...

...