flash AS3中的Loading加载进度条实现代码
比如说我们有一个主Flash叫main.swf,然后有一个Load.swf,只要在Load.swf中写入如下代码即可下载main.swf播放:
代码如下 | 复制代码 |
var request:URLRequest = new URLRequest("main.swf"); function loadProgress(event:ProgressEvent):void |
上面这段代码就很好的解决了加载main.swf显示进度的问题。
当然,这个不是我们今天的重点,我们今天重点说说单个swf文件显示进度的问题。
比如说有个1.5MB的swf,如何显示下载进度呢?这里我们要补一个常识,也许很多人都知道,那就是Flash必须下载完一帧以后才会显示这一帧的内容,但是实际中往往很多人没有真正理解,下面我们就具体说一说。
既然是下载完一帧才能显示,那制作Loading就必须至少有2帧,第一帧下载完后,开始显示进度,但是很多时候,我们发现实际中并没有显示,而我们也确确实实用了2帧,这个时候,我们就要检查第一帧的大小了。
有很多时候制作者不注意,第一帧很大,比如有1.2MB,第二针很小,0.3MB,这样,由于是下载完第一帧后才显示进度,等下载完这1.3MB,就什么都晚了,所以,我们必须要让第一帧尽可能的小。
这里需要Debug版本的Flash Player来作为我们的辅助工具,如下图所示,选择菜单 视图->数据流图标:
这里,我们可以发现,红色方框内显示的就是第一帧的大小,1248K,红色圆圈部分表示帧选择,这里选择第一帧。第一帧如此的大,怪不得不会显示Loading,等显示Loading了,影片也基本下载完毕了,这样,Loading就是去了意义。
我们看看同样的第二帧的情况:
图2
第二帧只有9B,几乎是瞬间就下载完毕。
所以,我们要做的就是让第一帧尽可能的小,把所有的数据都移到第二帧上去,可是,该怎么做呢?
Flash IDE中,选择文件->发布设置->Flash,选择脚本设置:
图3
把 “导出帧中的类” 设置到第二帧,然后保存确定。
图4
这样一来,我们就把所有的数据都放到第二帧了,第一帧就会大大减少:
图5
如上图,第一帧已经由原来的1248K变为119K,为什么是119K是因为我的第一帧加载了一个背景Loading图片,所以大了一点,如果没有任何元件的话会小很多,只有十几K。
这样,当第一帧下载完毕就可以显示下载进度了,我们直接在第一帧上写代码:
代码如下 | 复制代码 |
stop();//这句不要忘了,否则下载完了就直接跳到第二帧了 function loadProgress(e:ProgressEvent):void{
|
补充:flash教程,As3.0