2011-12-09 14 views
0

ゲームがあり、プレイボタンをクリックするとカウントダウンが開始され、カウントがゼロになるとゲームが始まります。問題はOS /コンピュータ時間から計算され、コンピュータからの秒数プレイヤーに異なる時に始めるようにさせるコンピュータへ。ゲームはサーバ時間でカウントダウンを開始します

誰もが同じ時間に開始するように、プレイヤーを同期させるためにカウントダウンカウントをサーバー時間で下げることは可能ですか?

コードは、それが私のデータベースに30秒 TIME1をcountsdown現在の分に左彼らの30秒かのように、現在提供されているコードが残っているOの秒の現在の分のことでカウントダウンactionscript3.0およびフラッシュCS5.5 で書かれていますゲーム間で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

ソケットを使用してサーバーにあなたのゲームを接続することであろう同期のすべてのすべてに最善の方法を おかげapreciated以上になり、そしてそれは、すべての接続にカウントダウンを渡してきましたプレイヤー...

+0

この問題を解決するための唯一の正しい方法です。いくつかのサーバー側の解決策(PHPなど)へのリクエストには1秒以上かかるため、残り時間の見積もりになります。実際にユーザーを同期させる唯一の方法は、ソケット経由でマスターサーバーに接続することです。 – joncys

関連する問題