`
cloud21
  • 浏览: 396233 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Flash使用服务器时间

    博客分类:
  • Flex
阅读更多
在做Flash应用时,有时可能会遇到需要使用服务器时间的情况,例如应用程序中显示当前系统时间、定时提醒等功能。使用new Date()创建的是客户端的时间,这并不是我们需要的,客户端时间很容易被用户更改,我们需要统一的服务器时间。

使用Flash与后台通信,我想您应该已经应用到您的项目中,不管使用哪种方式,都可以把服务器时间传到客户端,可以使用Http请求、Socket以及其他前后台通信的框架,只需要在后台中获取当前服务器时间,然后返回给前台。

需要服务器时间的时候,可以每次都请求后台来获取,但如果经常使用服务器时间来参与一些计算,那么每次请求就不是一件好的方式,例如客户端显示当前系统时间,难道要每秒钟都取获取一下服务器时间吗?再例如客户机的网速非常慢,请求服务器到返回结果的延迟比较长,这样获取到的时间误差比较大。

或许您已经想到了我们可以在开始时获取一次服务器时间,然后每次使用的时候,在前台计算出当前的服务器时间。Timer是Flash中用于计时的类,您或许想使用Timer来参与服务器时间的计算。在我之前的博文“Flash Player帧频、Timer计时 的时间间隔测试”中,测试了Timer计时的精确性,很遗憾Timer计时并不是精确的,无法参与到服务器时间计算中。

您是否使用过getTimer函数,在帮助文档中对于getTimer函数的描述是“返回初始化 Flash Player 后经过的毫秒数,并使用它来计算相对时间”。使用它来计算相对时间!这个正是我们需要的。

下面是一个计算当前服务器时间的类,您可以把该类的对象保存到全局变量中,然后第一次调用load()方法后,每次调用getServerTime()来获取服务器时间:
package  
{  
    import flash.events.Event;  
    import flash.events.EventDispatcher;  
    import flash.net.URLLoader;  
    import flash.net.URLRequest;  
    import flash.utils.getTimer;  
      
    /** 
     * 获取并计算服务器当前时间工具 
     * */  
    public class ServerTimeUtil extends EventDispatcher  
    {  
        // 连接服务器获取当前服务器时间的类  
        private var loader:URLLoader;  
        // 记录请求时返回的服务器时间  
        private var serverTime:Number = -1;  
        // 记录请求时当前flash player运行的时间  
        private var regTime:int;  
          
        public function ServerTimeUtil()  
        {  
            loader = new URLLoader();  
            loader.addEventListener(Event.COMPLETE, onComplete);  
        }  
          
        /** 
         * 初始获取服务器时间 
         * @url 服务器端用于返回当前时间的url地址,请求该地址必须可以返回服务器时间 
         * */  
        public function load(url:String):void  
        {  
            loader.load(new URLRequest(url));  
        }  
          
        private function onComplete(event:Event):void  
        {  
            // 记录请求完成时FlashPlayer时间  
            regTime = getTimer();  
              
            // 把服务器时间记录到serverTime中  
            // 需注意从服务器端返回的时候是从1970年1月1日到现在经过的毫秒数  
            // 如果服务器端返回的不是这个毫秒数,而是一个字符串时间或是一个Date对象,则需要您转换成上句中的毫秒数  
            var st:Number = Number(loader.data);  
            serverTime = st;  
              
            dispatchEvent(new Event(Event.COMPLETE));  
        }  
          
        /** 
         * 获取当前服务器时间 
         * @return 返回的数据为当前时间的Date对象,如果您需要一个Number对象,可以修改返回值 
         * */  
        public function getServerTime():Date  
        {  
            if(serverTime < 0)  
            {  
                // 服务器时间计算方式:当前服务器时间 = 当前FlashPlayer运行时间 - 请求时FlashPlayer运行时间 + 请求时服务器时间  
                var span:int = getTimer() - regTime;  
                var date:Date = new Date();  
                date.setTime(serverTime + span);  
                return date;  
            }  
            throw new Error("尚未获取到服务器时间");  
        }  
    }  
}  
分享到:
评论

相关推荐

    flash时钟 显示当前系统时间

    flash时钟 显示当前系统时间 有源码的

    读取服务器端时间的flash倒计时

    一旦获取到服务器时间,Flash可以将当前时间与目标时间(比如活动开始时间)进行比较,计算出剩余时间,并每隔一定间隔更新显示。这通常涉及到`Date`类的方法如`getHours()`, `getMinutes()`, `getSeconds()`来获取...

    实时动态时间 flash+swf源文件

    实时动态时间展示技术在网页设计和互动应用中十分常见,特别是在使用Flash和SWF格式的年代。本资源包含"实时动态时间 flash+swf源文件",意味着它提供了一种用Flash ActionScript编写的程序,能够实时显示当前的时间...

    Flash时间动画(源文件)

    - 编写ActionScript代码,利用getHours()、getMinutes()和getSeconds()函数获取当前时间,并将其赋值给文本框的文本内容。 - 使用Enter Frame事件或Timer类来定期更新文本框的内容,确保显示的时间始终与系统时间...

    FLASH的时间显示功能

    综上所述,Flash的时间显示功能依赖于ActionScript中的Date类,通过监听和处理enterFrame事件来实时更新时间,并可使用多种方法进行格式化和显示。在实际项目中,开发者可以结合HTML和JavaScript,创建丰富的、跨...

    linux-内存及flash使用情况查询.pdf

    本文档介绍了在不依赖于proc文件系统的情况下,查询系统当前内存和Flash使用情况的两种方法。 首先,了解Linux的/proc文件系统是非常必要的。它是Linux内核提供的一种特殊的文件系统,它不存在于硬盘上,而是存在于...

    Flash时间显示动画-电子表.rar

    具体实现时,ActionScript可以使用Date对象来获取当前系统时间,并将其格式化为时、分、秒的形式。然后,将这些信息赋值给动态文本字段,从而实现时间的实时显示。例如: ```actionscript var currentTime:Date = ...

    漂亮的flash时间显示

    例如,点击开始按钮时启动定时器,暂停按钮则停止计时但保留当前时间,重置按钮清除计时并回到初始状态。 在实际应用中,我们可能还需要考虑用户界面的美化,例如添加自定义字体、颜色、背景等,以达到“漂亮”的...

    显示时间和日历的flash

    将时间日历Flash嵌入论坛,可以方便用户快速查看当前时间,或者计划和安排论坛活动,提高了论坛的用户体验。 标签“其它类别”可能表明这个Flash组件不属于常见的分类,比如游戏、音乐或视频,而是属于一个更通用...

    圆形flash动画时钟表当前时间转动走势

    总结起来,创建“圆形Flash动画时钟表当前时间转动走势”涉及到以下知识点: 1. Flash图形工具的使用,如绘制圆形和线条。 2. 动画补间技术,如动作补间实现指针转动。 3. ActionScript编程,获取和处理当前时间,...

    Flash文件有源文件<显示系统时间>

    - 在Flash中,要显示系统时间,你需要使用ActionScript编写代码来获取并更新当前时间。ActionScript提供了Date对象,可以用来处理日期和时间。 - Date类包含多个方法,如`new Date()`创建一个新的Date对象,`...

    挺不错的数字时钟,flash版

    例如,开发者可能使用`Date`对象获取当前时间,然后使用字符串操作方法(如`toString()`)将时间转换为合适的格式。此外,源码可能还包括对用户界面元素的控制,如字体样式、颜色和动画效果。 日期时间处理在编程中...

    漂亮Flash时间 时钟 圆形.rar

    在学习这个Flash项目时,开发者可以从中了解到如何在Flash中创建自定义组件,如何应用图形库进行绘图,以及如何使用ActionScript进行时间和日期的处理。此外,对于3D元素的处理,可以深入研究ActionScript中的3D转换...

    flash的使用案例

    在探讨“Flash的使用案例”时,我们首先要理解Flash是一款由Adobe公司开发的动画创作和交互式内容设计软件。在20世纪90年代至21世纪初,Flash广泛应用于网页设计、在线游戏、动画短片和交互式应用程序中。随着技术的...

    FLASH动画“时间/日历”插件 for pjblog.rar

    标题中的“FLASH动画‘时间/日历’插件 for pjblog.rar”指的是一个专门为pjblog设计的Flash动画插件,该插件的功能是为博客添加一个动态的时间或日历显示功能,以提升博客的交互性和视觉效果。pjblog是一款流行的...

    asp.net 集合flash使用

    这意味着 Cookie 将在当前时间基础上的三天后过期。 #### 6. 获取 Cookie 的值 可以通过 `Values` 属性来获取特定键的值: ```csharp string authValue = myCookie.Values["auth"]; ``` 如果该键不存在,则返回 `...

    flash控件 flash控件 flash控件

    4. **网络通信**:Flash控件具备与服务器进行数据交换的能力,可以实现简单的网络应用,如实时聊天和在线数据提交。 5. **跨平台兼容**:Flash控件可以在Windows、Mac OS等主流操作系统上运行,确保了内容的广泛传播...

    Flash数字时钟 数字LED时间显示动画.rar

    此外,为了实现时钟的实时性,开发者会使用内置的Date类来获取当前系统时间,并将这些数据转换成适合显示的格式。 在代码结构方面,Flash项目通常包含时间更新函数,这个函数会定期调用,确保时间的实时刷新。可能...

    水泥 flash 水泥 flash 水泥 flash

    2. **动画制作**:Flash提供了时间轴和图层的概念,使得非程序员也能创建复杂的帧动画。逐帧动画和形状补间动画是两种基本的动画制作方式。 3. **组件和库**:Flash包含了一系列预定义的组件,如按钮、文本输入框等...

Global site tag (gtag.js) - Google Analytics