Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 as3日期应自行增加_Actionscript 3_Flash_Date_Datetime_Auto Update - Fatal编程技术网

Actionscript 3 as3日期应自行增加

Actionscript 3 as3日期应自行增加,actionscript-3,flash,date,datetime,auto-update,Actionscript 3,Flash,Date,Datetime,Auto Update,我发现,一旦我将AS3日期设置为服务器日期时间,它在整个生命周期中都保持不变 假设它正在自我更新,例如 I set: 2012/10/23 5:20 2小时后(继续运行SWF),应 2012/10/23 7:20 但它仍然是: 2012/10/23 5:20 这与我的要求背道而驰,我正在寻找一个好的解决方案,使我的服务器时间保持最新,而不受客户端时间戳的任何干扰关于日期类您需要了解的一件事是,它存储您创建该实例时的时间细节。 如果创建日期实例并在5分钟后尝试检索数据,则将在创建该实例时获

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

假设它正在自我更新,例如

I set: 
2012/10/23 5:20
2小时后(继续运行SWF),应

2012/10/23 7:20
但它仍然是:

2012/10/23 5:20

这与我的要求背道而驰,我正在寻找一个好的解决方案,使我的服务器时间保持最新,而不受客户端时间戳的任何干扰

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

为了进行固定时间更新,您需要使用重复事件,例如
ENTER\u FRAME
计时器类
,以使日期实例不断更新

以下示例使用了
计时器类

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);
}

关于
Date类
您需要了解的一点是,它存储您创建该实例时的时间细节。 如果创建
日期实例
并在5分钟后尝试检索数据,则将在创建该实例时获得时间详细信息,而不是在访问属性时

为了进行固定时间更新,您需要使用重复事件,例如
ENTER\u FRAME
计时器类
,以使日期实例不断更新

以下示例使用了
计时器类

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);
}

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

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
时,您将获得调整后的服务器日期。

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

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
时,您将获得调整后的服务器日期。

谢谢@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());
});

谢谢@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());
});

发布一些代码,您的问题不是很清楚。var clock:Date=新日期(“2012/10/23 5:20”);var tim:定时器=新定时器(1000);tim.addEventListener(TimerEvent.TIMER,function(){//每秒钟跟踪一次(clock.getSeconds());});伙计们真的很感谢你们的帮助,但还是有些结巴:我用@Florent代码测试了这个片段。当我在另一台计算机上打开它并更改机器时间时,服务器时间会丢失,因为计算的是服务器和客户端时间之间的差异,这是不正确的。客户端时间应该保留在客户端!永远不要相信客户机的时间戳。我的代码做了它必须做的事情:在客户机上保持服务器同步。如果您需要在多个客户端之间共享此信息,则必须再次请求服务器。使用您的示例,客户端正在扰乱服务器时间。相反,我提出了另一个解决方案,它将服务器时间的状态保持在flash中,并在不再次调用服务器进行进一步同步的情况下进行更新。发布一些代码,您的问题并不十分清楚。var clock:Date=新日期(“2012/10/23 5:20”);var tim:定时器=新定时器(1000);tim.addEventListener(TimerEvent.TIMER,function(){//每秒钟跟踪一次(clock.getSeconds());});伙计们真的很感谢你们的帮助,但还是有些结巴:我用@Florent代码测试了这个片段。当我在另一台计算机上打开它并更改机器时间时,服务器时间会丢失,因为计算的是服务器和客户端时间之间的差异,这是不正确的。客户端时间应该保留在客户端!永远不要相信客户机的时间戳。我的代码做了它必须做的事情:在客户机上保持服务器同步。如果您需要在多个客户端之间共享此信息,则必须再次请求服务器。使用您的示例,客户端正在扰乱服务器时间。相反,我提出了另一个解决方案,它将服务器时间的状态保持在flash中,并在不再次调用服务器进行进一步同步的情况下进行更新。我也有同样的想法,但它有自己的问题。新的日期将给我客户端系统日期,这不是我需要的。我将不得不不断更新我的时钟,一旦它被加载,它最多与服务器时间同步。我也有同样的想法,但它有自己的问题。新的日期将给我客户端系统日期,这不是我需要的。我将不得不不断更新我的时钟,这是最同步的服务器时间一旦得到加载。谢谢,我可以打电话给它每秒钟。格雷特汉克斯,我可以随时打电话给你。伟大的