大家知道,当flash影片或者网页体积相当大的时候,等待页面的出现是非常枯燥的,所以loading的概念就产生了
loading的制作方法有许多许多种,今天详谈一种。
好了,转入正题。
首先,CTRL+F8新建一个电影剪辑(MC),命名为loading。
然后,进入这个MC,做一个方框,不带边框,只留填充色,选中方框,按F8转换为图形元件。然后按F6在第100帧做一个关键帧。回到第一帧,用自由变形工具(Q),将loading条从左或右像中间拖,拖至一条线为止,然后从第一帧做补间。这样loading动画就是一个从中间向两边延伸的,至于为什么要做100帧的渐变动画,那就是配合100%的AS咯,到100%下载的时候,这个条就延伸完毕咯!
接下来,将名字为loading的MC拖入场景种的第一层,放到合适位置,点F5延长一帧。将MC实例命名为loading。
然后进入我们的AS部分。
在主场景中新建一层,点击F6延长出一个关键帧,因为第一帧是空白帧,所以第二帧也延长出一个空白关键帧了。
第一帧写入AS:
a=getBytesLoaded(); //a定义为getBytesLoaded()
b=getBytesTotal(); //b定义为getBytesTotal()
loaded=int(a/b*100); //定义为a除以b再乘以100,目的是求个百分整数,其实对于这个loading的效果不大,不过打个基础,对于以后功能详细的loading有用。
loading . gotoAndPlay( loaded ); //loading这里就是场景中实例命名的那个loading,在下载的同时,运行这个MC,配合上面的百分整数显示整个下载过程。
第二帧写入AS:
if(a==b){ //如果a的值,就是下载的总值等于flash本身的总值,执行下列语句
nextScene(); //转到下个场景,这里可以看到,这里的主动画和loading场景是不同的,所以我们要用shift+f2再建立一个新场景,放入主动画,而且必须在loading场景的下面。
}else{ //其他情况,就是说a不等于b,多半是没有load完的情况下、
gotoAndPlay(1); //回到第一帧,这样做一个循环,当loading不成功的情况下,回到第一帧重新执行下载。
}
这样就完成了,切记,主动画要放在另外一个场景且在loading场景之下。
这次我们介绍用AS配合动态以及静态文本来完成显示详尽下载进程,临时再决定加上百分数的显示。
上次介绍了进度条,这次就不说了,直接进入百分数以及下载进程。
首先在场景用静态文本在合适的7个合适的位置分别写上:总字节数、已下载字节数、总帧数、已下载帧数、需要时间、实际已用时间和“%”,然后时间轴上用F5延长出一个帧。
然后分别在前六个的右边用动态文本拉出6个合适大小的框,不写任何东西,在“%”的右边用动态文本拉出一个3个字位数的框。
然后分别在属性框里给对应静态文本的动态文本框加变量:
总字节数:aby
已下载字节数:bby
总帧数:af
已下载帧数:bf
需要时间:at
实际已用时间:bt
%:loaded
然后新建一层,命名为AS(这并不重要,但是养成一个会分门别类的好习惯,大家以后看我放的源文件,不管是层名、还是库里面,我都会分门别类放好,多的时候会建立相应文件夹,这样方便大家找到源文件里面想要的东西),点F6延长出一个关键帧
然后第一帧写入as:
a=getBytesTotal(); //b定义为已下载总字节数
b=getBytesLoaded(); //a定义为需要下载的总字节数
loaded=int(b/a*100); //给变量名为loaded的动态文本框显示出需要下载字节数与已下载总字节数的百分比,想但简单,就是一个数学式,b除以a再乘以100
aby=_root.getBytesTotal(); //给变量名为aby的动态文本框显示出需要下载的总字节数
bby=_root.getBytesLoaded(); //给变量名为bby的动态文本框显示出已下载总字节数
af=_root._totalframes; //给变量名为af的动态文本框显示出总帧数
bf=_root._framesloaded; //给变量名为bf的动态文本框显示出已下载帧数
at=int(((aby-bby)/(bby/bt))+bt); //给变量名为at的动态文本框显示出总时间,这里也看得出是一个数学式
bt=int((getTimer())/1000); //给变量名为bt的动态文框显示出已用时间,1000是以毫秒计的。
然后在第二帧写入as:
if(a==b){ //如果实际下载的总字节数等于需要下载的总字节数那么,接下句
nextScene(); //转到下一个场景,也就是说还跟昨天一样,要将主动画放到loading场景之下的一个场景
}else{ //其他的,也就是以上条件不能达成
gotoAndPlay(1); //回到并播放第一帧,这样做一个循环,下载不成功就做到重新下载。
}
这样就全部完成了,大家看到AS跟数学非常有关系,int这个语句其实是Mathround的简化方式,而大家在第二帧第一行里面的if(a==b)注意千万不要写成a=b,=是赋值,==才是等于,大家切记。