庖丁解牛 酷炫FlashWeb loading预载程序篇
数码时尚
关于FlashWeb
其实闪客们更趋向于把FlashWeb叫做交互网站,这是与传统Web相比较得出的结果,FlashWeb的互动、酷炫效果,使其比传统Web更能吸引观众的眼球。相信FlashWeb必能发起一场网络革命,从而最终替代传统平面网页。
笔者个人认为,在国内,Flash好像误入歧途了。按照MacroMedia公司的初衷,Flash是一个网络交互多媒体平台,虽然直到现在它还没有真正达到平台的目的,但伴随着MX Studio的发布,这个目标相信已经不会太远了。像前面所说,Flash其实是一种网络交互多媒体形式。FlashWeb也许只是网络交互多媒体的一种表现形式,但却是最细致、最美丽的表现形式,也许它就是MacroMedia公司开发Flash的初衷。
其实FlashWeb最难的地方就在于Web的嵌套结构。正因为如此,FlashWeb在结构方面也最讲究,最注重每一个多媒体物体与整体之间的融合。其实,这些内容,也就是在Movie Clip(影片剪辑)的嵌套结构中得以体现的。
Movie Clip,是FlashWeb中最重要的组成部分,我们可以把Movie Clip看成是一个独立的影片部分,它可以拥有独立的时间轴和独立的Action程序,拥有与主影片完全相同的循环结构,因此,我们可以把一些非常小的功能做成一个Movie Clip,然后把十几个小功能的Movie Clip嵌套在一个大的Movie Clip影片剪辑中,合成一个完整的功能。在场景中放置若干大型的Movie Clip,从而组成整个网站的交互部分。每一个Movie Clip都有自己的功能,比方说在我所制作的这个FlashWeb中,Loading程序是一个影片剪辑,下拉菜单是一个独立的Movie Clip影片剪辑,浮动面板又是一个独立的Movie Clip影片剪辑。而在浮动面板的影片剪辑中,面板的收缩放大,是一个影片剪辑,控制面板收放的程序又是一个独立的影片剪辑。所有这一切,在接下来的制作中,将得到最为完整的体现。
本系列将从“Loading预载程序规范制作、下拉菜单、浮动面板、移动背景、四通八达的链接、音乐系统”六个方面逐一进行详述,完成一个完整的FlashWeb。如果你有一定的Flash基础,相信能很快上手。图1是本系列连载实例要最终实现的效果。本连载源程序及图片部分可以在http://wsmmt.52flash.net/flashweb.rar处下载。
1.打开Flash MX,点击Properties面板,设置影片的宽度为640px,高度为480px,背景色彩为#212C39,每秒播放24帧,如图2所示。
2.打开Window\scene,在场景面板中,将场景名称改为Loading,同时新增一个场景,名称为Web,如图3所示。
提示:依照我本人的创作习惯,喜欢将Loading程序单独制作成一个场景,将网站内容做成一个场景。
3.将Layer1图层改为Logo,点击File\Import导入logo.png图片,在Library面板中双击图片角色,打开Photo Properties面板,将图片设置为质量100的不压缩形式,如图4所示。
4.新建一个图层,名称为Logotext,使用文字工具输入内容,如图5所示。
5.新建一个图层,图层名称为loadscale,绘制一个无边框矩形,色彩名称为loadscale,绘制一个我边框矩形,色彩为橙色,选中后,按F8键转换成Movie Clip,注意将对齐方式选为左端为中心点对齐,如图6所示。在Properties面板的Instance Name项中,输入影片剪辑的实例名称为loadscale。
6.新建一个图层,图层名称为Loadtext,使用文字工具输入两行文字,“已装载字节”和“剩余时间”。
7.使用文字工具,在Properties面板中将文字属性选为Dynamic Text动态文本方式。然后在Var输入框中,输入动态文字的变量为Loadbytes,如图7所示。然后在已装载字节的文字后面拖出一个文字框。
8.使用第七步的方法,制作另一个动态文本框,在Var输入框中输入变量名称为Timeload。最终完成如图8所示。
9.在所有图层的第2帧按F5键,使时间轴延续,然后新建一个图层,图层名称为Loadaction,在Loadaction的第2帧按F6键,打开Action面板输入以下内容。
if(getBytesLoaded()>=getBytesTotal()){
(当影片已装载的字节大于或等于总字节时)
gotoandplay("web",1)
(影片的时间轴跳转到Web场景的第1帧开始播放)
}else{
(如果已装载的字节小于总字节时)
loadscale._xscale=(getBytesLoaded()/getBytesTotal())*100
(loadscale影片剪辑的宽度等于已下载的字节除以总字节,再乘以100)
loadbytes=getBytesLoaded()+"/"+getBytesTotal()+"bytes"
(loadbytes动态文字框的内容为,已下载的字节与总字节之比)
timetotal=timeloaded+timeforecast
timeloaded=int(getTimer()/1000)
(timetotal变量的内容为已经开始播放的时间,因为gettimer()函数所取的时间为毫秒,所以需要除以1000来得到秒数)
timeforecast=int((getBytesTotal()-getBytesLoaded())/getBytesLoaded()*timeloaded)
(timeforecast变量的内容为总字节减去已下载的字节之差,除以已下载字节,再乘以已经开始播放的时候,得到的数值为预测的剩余时间)
timeload=timeforecast+"/"+timetotal+"secs"
(那么,timeload动态文字框的内容为预测剩余时间与预测的总时间之比)
gotoandplay(1)
(跳转到第一帧,重新开始更新数据)
}
Flash制作loading预载程序,从根本上是大同小异的,本实例中,使用的是getBytesLoaded()函数,而不是_Frameloaded属性,实际上也是由FlashWeb的结构与MTV的结构不同而导致的,因为大部分的交互网站,时间轴并不是主要的舞台,嵌套的影片剪辑,大量的交互内容,构成了FlashWeb宽广的可塑性。在这里,时间轴上的帧,很有可能只有一帧,那么:oading预载程序当然无法使用_Frameloaded属性来完成,而实际上,无论是FlashWeb还是MTV,使用getBytesLoaded()函数,都是可以准确地完成功能,也不会出现像_Frameloaded那样的误差了。
在下一期中,我们将着重讲解下拉菜单的制作方法。使用下拉菜单是大多数FlashWeb的首选菜单,相信读者可以通过学习下拉菜单的制作而一通百通,掌握大部分FlashWeb动态菜单的制作方法。







