| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
融客家园提供10M动
圈网传奇:2个创始
郑州一28岁火车司
我认识图王以后的
郑州一28岁火车司
我认识图王以后的
利用业余时间创业
贝壳网关闭:互联
中国创业童话:一
在FLAHS中实现LRC

动态时间延迟的实现           

动态时间延迟的实现

作者:佚名 来源:不详 更新:2007-1-13 20:48:12 错误报告 我要投稿

动态时间延迟的实现 
 作者:小乙哥

 异景空间

 [教程予览] [源文件下载] 
 
 http://flash8.net/jq/01103/delay.zip

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

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

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

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

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

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

 
 在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 Go to and Play (2)
 Else
 Begin Tell Target ("/")
 Play
 End Tell Target
 Go to and Stop (1)
 End If 
 在需要使用延迟算法的场景中生成一个DelayFunc的实例并且命名为DelayFunc。在需要延迟的地方设置相应的延迟时间/:Delay,并调用Call("/DelayFunc:Start") 。 
  

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

 
 您如对本教程存在什么疑问,请与我们联系。
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。