游戏按服务器时间开始倒计时

时间:2011-12-09 18:33:00

标签: actionscript-3 flash-cs5

我有一个游戏,当玩家点击播放按钮时倒计时开始,游戏开始时计数达到零,问题是它是从Os /计算机时间计算的,它们是从计算机到计算机的秒数差异导致玩家开始在不同的时间。

倒计时是否可以按服务器时间倒计时让玩家保持同步,这样每个人都可以同时开始?

代码在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 个答案:

答案 0 :(得分:1)

同步所有内容的最佳方式是使用套接字将游戏连接到服务器,并将倒计时传递给所有连接的玩家......