0

我发现一旦我将我的 AS3 日期设置为服务器日期时间,它的整个生命周期都将保持不变。

应该是在更新自己,例如

I set: 
2012/10/23 5:20

2小时后(继续运行SWF)它应该是

2012/10/23 7:20

但它仍然存在:

2012/10/23 5:20

这违反了我的要求,我正在寻找一个好的解决方案来保持我的服务器时间是最新的,而不会干扰客户端时间戳

4

3 回答 3

2

保持日期同步的一个简单方法是依赖两个日期!

public class SyncDate
{
    public function SyncDate(serverDate:Date)
    {
        _localDate = new Date();
        _serverDate = serverDate;
    }

    private var _localDate:Date;
    private var _serverDate:Date;

    public function get date():Date
    {
        var timeDiff:Number = (new Date()).time - _localDate.time;
        return new Date(_serverDate.time + timeDiff);
    }
}

当您致电时SyncDate#date,您将获得调整后的服务器日期。

于 2012-10-22T09:27:01.047 回答
2

您需要了解的一件事Date Class是它存储了您创建该实例时的时间详细信息。如果您创建一个Date instance并在 5 分钟后尝试检索数据,您将获得创建该实例时的时间详细信息,而不是您访问该属性的时间。

为了不断更新时间,您将需要使用重复事件,例如ENTER_FRAMETimer Class来让您的日期实例不断更新。

以下示例用途Timer Class

var my_date:Date; 

var my_timer:Timer=new Timer(1000);
my_timer.addEventListener(TimerEvent.TIMER, onTimer);
my_timer.start(); 

function onTimer(e:TimerEvent):void {
my_date = new Date();
trace(my_date.hours + ":" + my_date.minutes + ":" + my_date.seconds);
}
于 2012-10-22T08:27:48.413 回答
-1

谢谢@Florent,@Sohel Khalifa,我终于解决了这个问题。我试过这个:

var clock:Date = new Date('2012/10/23 5:20:00');
var tim:Timer = new Timer(1000);

tim.addEventListener(TimerEvent.TIMER,function(){
    clock.time = clock.time + 1000;
    trace(clock.getMinutes()+":"+clock.getSeconds());
});
于 2012-10-22T11:34:36.627 回答