Игра начинает обратный отсчет по времени сервера
У меня есть игра, и когда игрок нажимает кнопку воспроизведения, начинается обратный отсчет, и игра начинается, когда счет достигает нуля. Проблема заключается в том, что он отсчитывает время от компьютера и компьютера, и разница в секундах от компьютера к компьютеру приводит к тому, что игроки запускаются в разное время.,
Можно ли сделать обратный отсчет по времени сервера, чтобы синхронизировать игроков, чтобы все начинали одновременно?
Код написан в actionscript3.0 и Flash cs5.5. Код, предоставленный в настоящее время, отсчитывает оставшиеся секунды текущего отсчета, поэтому, если их 30 секунд осталось в текущем минимуме, в моей базе данных будет 30 секунд, обратный отсчет времени1 равен 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 ответ
Лучший способ синхронизировать все - подключить игру к серверу с помощью сокетов и передать отсчет времени всем подключенным игрокам...