我有一个游戏,当玩家点击播放按钮时倒计时开始,游戏开始时计数达到零,问题是它是从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);
}
答案 0 :(得分:1)
同步所有内容的最佳方式是使用套接字将游戏连接到服务器,并将倒计时传递给所有连接的玩家......