0
我有一款游戏,当玩家点击播放按钮时倒计时开始,游戏在计数达到零时开始,问题是计算来自计算机/计算机的时间,它们与计算机的秒差导致玩家在不同的时间开始玩电脑。游戏按服务器时间开始倒计时
是否有可能通过服务器时间倒计时倒数来保持玩家同步,这样每个人都在同一时间开始?
代码在ActionScript3.0的和Flash CS5.5 writen 提供的代码目前剩余电流分钟锇秒的,所以如果他们30秒留在当前分钟在我的数据库countsdown 30秒 时间1倒计时在60场比赛之间60秒。 任何帮助将超过提前apreciated 感谢 戴夫
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)的请求将需要一秒多的时间,所以最终只剩下估计时间。真正同步用户的唯一方法是通过套接字将它们连接到主服务器。 – joncys