Vb教程 Vb.net教程 Vfp教程 C/C++教程 Vc/Vc++教程 Delphi教程 Java教程 Powerbuilder
  杀毒频道 | 短信频道 | 网络电视 | 论文中心 | 学上网 | 学软件 | 网页特效 | 电脑基础 | 论坛  
  NCRE | 软考 | CET | 职称英语 | 司法考试 | 报关员 | 公务员 | CATTI | CPA考试  
  Html教程 | Css教程 | Xml教程 | Asp教程 | Asp.net | Php教程 | Jsp教程 | Linux教程 | QQ技巧  
Photoshop Illustrator ImageReady Maya教程 3D Max教程 Lightscape Coredraw教程 Authorware Autocad教程 Freehand教程
Access教程 Mysql教程 Sql server Oracle教程 Word教程 Excel教程 Powerpoint Frontpage Asp.net源码 Php源代码
Flash教程 Fireworks Dreamweaver C#教程 outlook教程 系统安装 vbscript教程 Javascript Jsp源代码 Asp源代码
您的位置:首页 >> flash教程 >> 正文

Loading 时间模拟术

文章来源:闪客帝国 作者:小东瓜

  Loading技术是Flash中一个重要的环节,一般情况下该技术是采用百分比显示的方式来让用户直观地看到下载比,但是这种方法有一个严重的不足,就是当某帧的数据量特别大时,百分比和进度棒就会长时间停止不动,特别在使用一些大型位图或者大的事件声音文件时,由于这些目标的数据量一般都上百K大小,结果是用户在没有任何提示的情况下,不得不等特半分种左右时间(长短视连接速度而定),很多人因此放弃了继续等待,从而使得作品失去了一次展示机会,有没有办法解决呢?答案是肯定的。

  请大家先看一看下面的一段SWF文件的REPORT:

Movie Report
------------

Frame # Frame Bytes Total Bytes Page
------- ----------- ----------- ---------------
1     76       76      loading
2    5971      6047      2
3     222      6269      3
4     50      6319      4
5    68089     74408      版头
6     156     74564      2
7     156     74720      3
8     156     74876      4
9     156     75032      5

  可以看出这个动画文件在前5帧就需要Loading70多K的数据,由于这帧用的是动画背景声音文件,并且已经无法再减小其大小,此时你可以采取时间模拟术来使得下载比发生变化,由于本制做方法与常规的loading制做在图形制做方面完全一致,故仅列出编程部分:

第一帧: 先取得时间初始值

Set Variable: "begin" = GetTimer
Set Variable: "delaytime"= 20
Set Variable: "begintime" = 0

第二帧:计算下载比。 begin代表用来比较的时间初始值,begintime表示已经下载了多少秒时间, loaded_num表示下载进度显示比(跟一般的loading制做下载比,初值是1),delaytime表示想要模拟的秒钟数。

Set Variable: "downloaded" = GetTimer
If ((begintime < delaytime ) and ( _framesloaded < 8 ))
comment:当时间小于20秒,并且已经下载帧数小于8时便做,
判断下载的帧数据是为了不让在本地硬盘上也等待相同的时间。
If (downloaded-begin>1000)
comment:当时间够一秒钟时就必需将下载比加1,时间加1秒,并重置初始时间。
Set Variable: "loaded_num"= loaded_num+1
Set Variable: "begintime" = begintime+1
Set Variable: "begin" = GetTimer
End If
Else
comment:跟正常的loading制做很相似,但必需加上前面的时间数,
用88去乘是因为根本不用完全等待动画下载完毕使可播放,
正常情况应是(100-delaytime),具体数值要根椐动画大小与总帧数来定。
Set Variable: "loaded_num" = delaytime+int(88*_framesloaded/_totalframes)
End If
Begin Tell Target ("/preload")
comment:显示进度条
Go to and Stop (/:loaded_num)
End Tell Target
comment:建议用大于等于判断下载比,且最好不用100,这样不会死循环。
If (loaded_num>=98)
Go to and Play (4)
End If

第三帧:循环。

Go to and Play (2)

第四帧:正常的动画内容。

注意:

  这个loading制做比一般的制做多一帧,需三帧来完成。
  时间模拟并不限定在什么位置,你可以根椐你的需要来对上述程序进行调整。最关键的就是①保证下载比的连续性。②下载比不超过100。③不死循环。
  尽量不要使用这种技术,而应该合理安排各个动画场景的的出场次序,让下载更加均匀。

[返回]

编程语言 web开发 数据库 网络技术 操作系统 服务器 网页设计 图形设计 办公软件 常用软件 学电脑

Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved.
关于本站 | 版权声明 | 联系我们 | 友情链接 |
编程入门网 版权所有