最近在制作flash片头时发现一个问题,我的loading失效了?百思不得奇解,因为loading部分代码一直都用得好好的,而且每次都是复制过来改改帧数罢了。
我的loading部分代码很普通:在第35帧上的时间线上是:
total=_root.getBytesTotal();
loaded=_root.getBytesLoaded();
baifenshu=int((loaded/total)*100);
baifenbi=baifenshu+"%";
jindutiao._xscale=baifenshu;
在36帧上的时间线上代码是:
if(baifenshu==100){
gotoAndPlay("loadEnd");//loadEnd标签是在37帧上
}else{
gotoAndPlay("loadStart");//loadStart标签是在35帧上
}
为了让浏览都等待时不要太枯燥,所以先等待过程中是有些音乐,有一个是设成"开始、循环"(第二帧开始的),另一个是设成"数据流、重复一次"(第九帧开始的),理论上是会在在loadin完之前会不断在35、36帧上循环检测。然而我出现的情况却是(在flash里的摸拟下载里观察到的)已经load超过35帧并到达几百帧(近50%)时当前帧并没有在35-36帧里循环,而是停在第九帧上不动了,大约已loading的百分比达到65%左右才向前播放并停在35与36帧间检测。这新让我的loadin大打节扣。
经将35帧前的元件、时间帧上的动画、层一个个册除差的方法后来得知罪魁祸首就是第9帧里里设置成"数据流"的声音,将其改成"事件"问题就得已经解决,但为什么"数据流"的声音会影响到loading失灵呢?本人愚味,通过闪吧版主"猫大哥"的QQ精彩解说后终于明白是:如果是设成"数据流",swf就必须缓冲够设置的秒数或是说足够的帧序列.默认缓冲秒数为5.那么播放这个流声音就要缓冲5*30(30是我flash的帖频)个帧序列才能播放。(哪怕你的声单很小,只有0.0001K也是如此)