Flash使用服务器时间
来源:互联网 发布:淘宝 银联在线支付 编辑:程序博客网 时间:2024/06/14 22:38
在做Flash应用时,有时可能会遇到需要使用服务器时间的情况,例如应用程序中显示当前系统时间、定时提醒等功能。使用new Date()创建的是客户端的时间,这并不是我们需要的,客户端时间很容易被用户更改,我们需要统一的服务器时间。
使用Flash与后台通信,我想您应该已经应用到您的项目中,不管使用哪种方式,都可以把服务器时间传到客户端,可以使用Http请求、Socket以及其他前后台通信的框架,只需要在后台中获取当前服务器时间,然后返回给前台。
需要服务器时间的时候,可以每次都请求后台来获取,但如果经常使用服务器时间来参与一些计算,那么每次请求就不是一件好的方式,例如客户端显示当前系统时间,难道要每秒钟都取获取一下服务器时间吗?再例如客户机的网速非常慢,请求服务器到返回结果的延迟比较长,这样获取到的时间误差比较大。
或许您已经想到了我们可以在开始时获取一次服务器时间,然后每次使用的时候,在前台计算出当前的服务器时间。Timer是Flash中用于计时的类,您或许想使用Timer来参与服务器时间的计算。在我之前的博文“Flash Player帧频、Timer计时 的时间间隔测试”中,测试了Timer计时的精确性,很遗憾Timer计时并不是精确的,无法参与到服务器时间计算中。
您是否使用过getTimer函数,在帮助文档中对于getTimer函数的描述是“返回初始化 Flash Player 后经过的毫秒数,并使用它来计算相对时间”。使用它来计算相对时间!这个正是我们需要的。
下面是一个计算当前服务器时间的类,您可以把该类的对象保存到全局变量中,然后第一次调用load()方法后,每次调用getServerTime()来获取服务器时间:
上面这个类用来计算服务器时间,对于大多数情况都可以满足要求,不过我们刚才提到了一点“客户机的网速非常慢,请求服务器到返回结果的延迟比较长,这样获取到的时间误差比较大”,这个时候我们还需要做一点修正,让时间的误差更小一些(当然不可能做到完全无误差,只能让误差尽量的小)。
我增加了两个变量用来记录loader请求时的FlashPlayer运行时间和请求成功后的FlashPlayer运行时间,然后取这两个时间的平均值作为regTime的值,regTime就更接近于服务器端创建系统时间的这个时刻。下面是修改的内容:
- Flash使用服务器时间
- 使用XML实现Flash与服务器通信
- 使用LoadVars实现Flash与服务器通信
- 使用LoadVars实现Flash与服务器通信
- flash 时间
- 使用ntpdate同步服务器时间
- 使用js获取服务器时间
- C# 的时间戳 在flash actionscript中使用
- 使用flash的Socket类连接服务器的任意端口
- 局域网内使用ntp服务器同步时间
- 使用NTP服务器同步Android设备时间
- 使用ajax实现从服务器获得时间
- 使用NTP服务器同步Android设备时间
- python里使用socket实现时间服务器
- Bug-把客户端时间当做服务器时间来使用!
- flash中的时间
- FLASH 擦写时间比较
- flash 人物时间
- display:none与visibility:hidden
- 关于Ubuntu 10.4不能安装VMware workstation7的解决办法!!!!!
- AIX下内存泄漏的监控
- 滑动菜单及滑动解锁技术分析
- 使用Qt开发运行于WinCE上的程序
- Flash使用服务器时间
- MTK短消息编程
- Python Cookbook(第2版)中文版
- VS2010从了解到实战
- syscolumns OBJECT_ID 数据库验证字段表名
- 炮轰iPad、Xbox 称其导致信息娱乐化 - 奥巴马
- java和javac命令
- Locale ID (LCID) Chart
- 用Lucene建立索引及查询示例