Loading制作全接触──高级版本
网络与通信
在上一期中,我们已经完成了精确显示装载进程的Loading的制作,那么你有没有再仔细考虑一下,做一个功能更强大的Loading,让它可以显示更多信息,比如当前下载速度,剩余时间,已下载字节数等等,真正做到一切为访问者着想?加上这么多功能是不是要编写庞大的代码才能完成?不用,只需几句简单代码就成了。来吧,跟我看看去(如(图1))!

分析
可以看到,图中Loading 给出的信息非常详细,包括总大小、已下载数、剩余数、当前速度、用时、剩余时间总共六项,可以说基本把能给出的信息都给出来了。这个Loading是在我们上期做好的那个精确Loading的基础上修改完成的,增加了六个文本信息显示和相关的说明,其做法跟“百分比”数据显示大体相同,即建立动态文本框,然后在Actions中编写代码将信息发送给动态文本框进行显示。
动手
打开我们上期建立的精确Loading,然后创建一个新层命名为“精确显示”。使用文字工具输入项的名称,一共六项。输入完毕,建立动态文本,在文字“总大小”右边建立文本框,在属性面板将文本框设置为Dynamic Text (动态文本),Ver:项将文本框设置为“zongshu”(拼音:总数)。然后依次在“已下载”文字右边建立动态文本,Ver:项设置为“yixiazai”(拼音:已下载),“剩余”右边动态文本的Ver:项为“shengyudaxiao”(剩余大小),速度旁边的为“sudu”(速度) ;用时旁边的为“yongshi”(用时),剩余时间旁边的为“shengyushijian”(剩余时间)。
动态文本全部建立完成,我们来看看层“精确显示”的Timeline。由于系统会使新建立的层的帧数与影片帧数相同,但我们的Loading部分只有10帧,所以要把多余的部分删除。拖动选中第10帧以后的Frame,点右键选择Remove Frames (移除帧),这样使层“精确显示”的帧数与其他Loading元素层保持一致。然后在“Actions”层的第2帧点右键选择Actions打开Actions面板,在以前的代码后面接着编写用于详细显示的代码:
shengyubyt=int(byt-down);
获得剩余字节数字(shengyubyt),等于总字节(byt)减去已下载字节数(down)
time=int((getTimer())/1000);
总共需要的时间,使用函数getTimer
speed=int(down/time);
当前下载速度,等于已下载字节数(down)除以时间(time)
shengtime=int(shengyubyt/speed);
剩余时间(shengtime),等于剩余字节数(shengyubyt)除以速度(speed)
这部分代码将我们所要用到的数据进行了捕获。下面我们进行对动态文本传送信息的部分。
zongshu=byt+"k";
显示总字节数字,在场景中,总字节数的动态文字Ver:定义为“zongshu”,它显示的内容为byt(上面的代码中有解释,获得总字节数,后面再加上文字“K”)加上文字K
yixiazai=down+"k";
已下载字节数,已下载字节数down加文字K
shengyudaxiao=shengyubyt+"k";
剩余字节数,剩余字节数字加文字K
sudu=speed+"k/s";
速度,速度加上文字k/s
yongshi=time+"s";
已用时间,时间time加文字s
shengyushijian=shengtime+"s";
剩余时间,剩余时间加文字s
测试
这六项已经全部完成,我们关闭Actions面板,按两次“Ctrl+Enter”进行实际测试,可以看到已经按照范例图片中的显示,达到了效果,将Loading的多种信息动态实时地反映了出来。如果出现显示不正常的问题,请仔细检查Actions层第2帧中的Actions代码有无错误,同时检查“精确显示”层中的那6个动态文本框的Ver:定义与Actions中的有无出入。最后,我们给出完整的 Actions 代码:
byt = int((_root.getBytesTotal())/1000);
down = int((_root.getBytesLoaded())/1000);
shuju = int((down/byt)*100);
baifenbi = shuju+"%";
_root.jindutiao._xscale = shuju;
shengyubyt=int(byt-down);
time=int((getTimer())/1000);
speed=int(down/time);
shengtime=int(shengyubyt/speed);
zongshu=byt+"k";
yixiazai=down+"k";
shengyudaxiao=shengyubyt+"k";
sudu=speed+"k/s";
yongshi=time+"s";
shengyushijian=shengtime+"s";
提示:在Actions面板中,可以通过按扭切换Normal Mode和Expert Mode两种模式,在Normal Mode中,特定代码及函数程序会给出选项,可进行选择。在Expert Mode中,可以像在记事本中编辑文本那样方便地编辑代码。
编后:到这里,我们已经把Loading的制作从基础到高级讲过一遍,相信效果已经可以让大家满意了。文章至此也结束了,不过对于各位的Flash作品来说,这仅仅是一个开始哟!优秀的Loading还需要载入优秀的作品才会吸引人,多多努力哟:)