当然这里的"完美loding"是指londing程序的内部效果而不是外在的美观。不多说了,这篇帖子是我专门为菜鸟而写的,虽然关于"londing程序"制作介绍的文章已经不止唯一了,但是还有许多的新手对于"londing程序"还是有很多疑问,特别是对自己做的"londing"为什么总是在屏幕上一闪而过,有的甚至看不到"londing",当然,这曾经也是我自己的一个疑问。现在我就想大家介绍一个自己测试过N次的一个"双重加载+可视化加载(可以看到londing程序加载的过程)"在主影片上只占一帧的完美londing程序。
首先,我们按CTRL+F8新建一个影片剪辑名为"londing",最好在对其方式上选择"中心对其"。这时,我们就开始制作"londing"的Action,在第一层(名为Action)的第一帧输入以下代码:
_parent.stop();//当前影片的父影片剪辑,停止播放
var fa;//声明局部变量 fa
var fb;//声明局部变量 fb
var fc;//声明局部变量 fc
fc = 0;//使变量fc赋予值"0"
var ga;//同上 声明局部变量 ga
var gb;//变量 gb
var gc;//变量 gc
gc = 0;//使变量gc赋予值"0"
this.onEnterFrame = function() {
};//使当前对象(上面的变量),进入帧时开始调用,再次声明定义的函数
(复制以上代码到第一帧即可)
程序讲解:上面代码的主要作用是让影片认识我们定义的函数,在影片进入当前剪辑"londing"时使用。下一步就是输入londing程序的主要代码了,单击Action层按F5,在新建的一帧中输入以下代码:
fa = _parent._framesloaded;//使变量fa赋予值_framesloaded(影片已加载的帧数)
fb = _parent._totalframes;//使变量fb赋予值_totalframes(影片总帧数)
fc = fc+Math.round((fa/fb*100-fc)/10000000000000000000000000+1);//获取影片加载帧数的百分比
tiao1._xscale = (fc);//按加载帧数的百分比来缩放tiao1的宽
text2 ="准备加载影片字节中...";//在动态文本筐里显示"..."中的文字
text1 ="加载影片帧中... "+(fc)+"%";//把加载帧数的百分比在text1中显示,并在后面加个%
if (fc>=100) {//如果影片加载帧数的百分比达到100%,则开始执行以下代码
text1 = "完成";//在动态文本text1中显示"完成"
ga = _parent.getBytesLoaded();//使变量ga赋予值getBytesLoaded()(影片已加载的字节数)
gb = _parent.getBytesTotal();//使变量gb赋予值getBytesTotal()(影片总字节数)
gc = gc+Math.round((ga/gb*100-gc)/10000000000000000000000000+1);//获取影片加载字节数的百分比
tiao2._xscale = (gc);//按加字节的百分比来缩放tiao2的宽
text2 = "加载影片字节中..."+(gc)+"%";//把加字节数的百分比在text2中显示,并在后面加个%
if (gc>=100) {//如果影片加字节数的百分比达到100%,则开始执行以下代码
_root.gotoAndStop(2);//使上一级影片转到第2帧并停止播放影片
this.stop();使当前级停止播放影片
}
}
程序讲解:londing程序制作的方式有两种,一种是帧加载第二种就是影片字节的加载,在以上代码中已经都介绍的很清楚了。而上面的程序已经把两种加载的方式都融合到其中了,因此我可以大胆的说它是完美的londing程序。在影片帧加载完毕后,再开始加载影片的字节数。上面代码中的"if (条件) {执行代码}"就是一个条件语句,它就是使当满足一个条件后,如if (fc>=100) 加载帧数达到百分之百后才开始执行另一段代码。其作用主要在于使两段代码可以分开执行,如果取消了"if (条件) {执行代码}"FLASH就会让两段代码同时执行了。
还有,有些新手对于"_root与this"的用法不是很清楚,因此在这里也有必要提一下它们的用法与意义。若在一个元件中的按钮中加入"on(press){_root.gotoAndStop(5)}",它的意思就是指在单击按钮后主影片(最上一层)转到第5帧并停止。若在一个元件中的按钮中加入"on(press){this.gotoAndStop(5)}",控制的就是按钮在当前级影片剪辑。再插一句,灵活的运用"_root与this",会让自己更好的控制影片。
完成Action层的最后一步,让我们再次单击此层并按F5。在Action层的第三帧中添加代码:
gotoAndPlay(2);
好了,现在可以开始制作londing程序的可视部分了。
新建一层,名为TEXT。在TEXT层中新建两个动态文本筐,字体大小设为14。在一个文本筐的属性中设置变量为"text1"宽为153,在另一个动态文本筐,设置变量为"text2"宽为153。在对其中点击"垂直对其"再新建一层,名为填充筐。在这层中选择"矩型工具(R)",笔触颜色为黑(可自选)填充颜色为黄色(可自选)拖出两个矩型,宽为150高为12。使"text1"与一个矩型水平中对其,使"text2"与另一个矩型水平中对其。单击两个矩型中的颜色区,转换为影片剪辑为左中对其,设置与"text1"水平中对其的矩型实例名为"tiao1",设置与"text2"水平中对其的矩型实例名为"tiao2"。
最后把制作好的londing剪辑从库中拖出,放到主场景的任意位置。好了现在londing程序可以说已经是完成了,但是在按CTRL+ENTER测试的时候你却会发现,在两个tiao的缩放上出现了一些问题,如图,当然解决的方法也很简单。
说明一下,我在制作矩型时是把外筐与tiao分层了,tiao1与tiao2也分了层,这样是为了更方便的来制作tiao。现在我们把tiao2属性中的宽设置为1.0,与tiao2外筐的最左侧对其。
新件一层,名为遮照。复制实例tiao2,粘贴到遮照层,选择"粘贴到当前位置"。右击遮照层,选择右键菜单中的"遮照层"。好了现在londing程序的制作已经大工告成,当你再测试的时候,所有问题都已经解决。
当然,如果你觉得一步一步的制作有些麻烦,你只需要将原程序(FLA)文件中lond层的第一帧,复制到你影片的第一帧即可。注:此方法可适用于任何影片。