Flash专栏: 基础教程 | 技巧运用 | MTV实例教程 | 游戏实例教程 | 实例教程 | AS教程(new)
photoshop专栏: 基础 | 进阶 | 技巧总汇 | 精彩实例 | 文字特效 | 滤镜魔术 | 实际应用
网页设计: Dreamweaver教程 | FireWorks教程 | CorelDraw设计 | Freehand/Illustrator教程 | 音乐转换教程
其他教程: 操作系统 | 程序设计 | 网站开发 | 图形图像 | 数据库 | 网络技术 | 安全相关 | 认证考试 | 硬件知识 | 服务器
Flash专栏>Flash基础教程>FLASH动态时间延迟的实现   返回上一页

  日期:2003-11-16 20 作者:小乙哥 来源:异景空间
天气预报 IP地址 手机号码 邮编 翻译 在线代理 在线评书 好dj


FLASH动态时间延迟的实现


动态时间延迟的实现

作者:小乙哥

异景空间

[教程予览] [源文件下载]

  大家都知道,FLASH中的循环(LOOP)存在一个致命的弱点,即它存在一个最大循环上限:2000000次。超出这个上限时,FLASH PLAYER将认为当前循环是一个无限循环。因此,当我们在寻找一个通用的时间延迟算法的FLASH实现时,我们时无法相信LOOP循环的,我们只能寻找其他的手段。在FLASH中的一个函数——GetTimer正是我们寻找的另一条实现时间延迟算法的‘路’。

  GetTimer函数的作用就是返回FLASH影片由开始播放到函数调用这两点间的时间间隔,它的返回值单位时毫秒。我们在使用GetTimer的时候要注意单位的转换!否则可能会出现要求等1秒却等了1毫秒的时间等类似的笑话。

  下面我们给出一个简单通用的算法

    1. 在影片上新建一个MovieClip,命名为DelayFunc并进入编辑这个MovieClip;
    2. 在DelayFunc的第一桢处填加标签(Label)为Start,并加入下列行为。

      算法解释:首先要做的是获取规定延迟时间/:Delay,如果没有设定则取缺省值5秒。这里的变量Start就是此次延迟的起始时间。

      Comment: 变量初始化
      If (/:Delay="")
      Set Variable: "/:Delay" = 5
      End If
      Comment: 获取当前时间作为起始参照
      Set Variable: "Start" = GetTimer


    3. 在DelayFunc的第三桢上填加以下行为:

      算法解释:这段算法主要的工作就是依据时间比较的结果来进行相应的处理。当延迟时间没有达到即/:Elapsed小于/:Delay,那么程序进入下一个循环(Go to and Play (2));如果延迟时间达到了或者稍稍超过了(这里的超过主要是由于播放第二桢所造成的时间误差,一般在0.05秒左右),那么程序体返回调用延迟函数所在时线并将程序体置零(Go to and Stop(1))。

      Comment: 获取以过去时间,注意单位换算
      Set Variable: "/:Elapsed" = (GetTimer-Start)/1000
      Trace (/:Elapsed)
      Comment: 时间判断函数,这是算法的主体
      If (/:Elapsed</:Delay)
      Go to and Play (2)
      Else
      Begin Tell Target ("/")
      Play
      End Tell Target
      Go to and Stop (1)
      End If
    4. 在需要使用延迟算法的场景中生成一个DelayFunc的实例并且命名为DelayFunc。在需要延迟的地方设置相应的延迟时间/:Delay,并调用Call("/DelayFunc:Start") 。

     

  好了我们的延迟函数制作好了,如果你希望可以马上使用的话,请将我提供的源文件以Open As Libraray方式打开,然后按照第四步进行制作就可以了。


 
高手云集 版权所有 1998-2006