package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.TimerEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.utils.Timer; [SWF(backgroundColor="#dddddd")] public class TimeSyncExample extends Sprite { private var _field:TextField; public function TimeSyncExample() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var _cont:Sprite = new Sprite(); addChild(_cont); _cont.x = 3; _cont.y = 3; var _title:TextField = new TextField(); _title.autoSize = TextFieldAutoSize.LEFT; _title.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, true); _cont.addChild(_title); _title.text = "Server time: "; _field = new TextField(); _field.autoSize = TextFieldAutoSize.LEFT; _field.defaultTextFormat = new TextFormat("Arial", 12); _cont.addChild(_field); _field.x = _title.x + _title.width + 2; _field.text = "Syncing..."; syncServerTime(); } public function syncServerTime():void { var request:URLRequest = new URLRequest("http://webroo.org/time.php"); var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); loader.load(request); } protected function loaderCompleteHandler(event:Event):void { var time:Number = (event.target as URLLoader).data.time; TimeSync.getInstance().sync(time * 1000); // Multiply unix time to ms var timer:Timer = new Timer(1000); timer.addEventListener(TimerEvent.TIMER, timerHandler); timer.start(); } protected function timerHandler(event:TimerEvent):void { _field.text = new Date(TimeSync.getInstance().time).toLocaleString(); } } }