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