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

学習する必要があることの1つDate Classは、インスタンスを作成した瞬間の時間の詳細が格納されることです。を作成してDate instance5分後にデータを取得しようとすると、プロパティにアクセスした時刻ではなく、そのインスタンスを作成した時刻の詳細が表示されます。

ENTER_FRAME時間の更新を一定にするには、またはなどの定期的なイベントを使用Timer 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 に答える
2

日付の同期を維持する簡単な方法は、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 に答える
-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 に答える