图文
  • 图文
  • 视频
您的位置: > 网页设计 > Flash

如何制作flash的加载动画

时间:2012-7-23 14:23:53 来源:学无忧 阅读:0次 评论0
标签:加载,动画

一个FLASH动画,如果非常大,估计下载会一段时间,这样就可能在播放时一边播放一边下载,为了解决这种问题,通问会做一个加载片头,一旦加载完才开始播放,这就是我们通常所说的loading,今天就来讲讲关于制作loading的基本原理,让你真正明白制作loading的前前后后。
先来看看loading的原理。在flash中,制作loading的目的是为了预先加载一部分内容(你可以选择全部加载完毕,或者加载一部分之后),然后再把flash的主要内容展示出来。一般来讲,loading是放在flash动画时间线的第一帧上面,当然也是可以不放在第一帧,比如放在任意一帧,但是你第一帧就得做一个跳转,总之就是一开始就播放这loading这处小动画,在做flash的loading时要稍注意以下的问题:
第一,把要导出的元件取消导出,把它们集中放在某一帧(除开你做loading的那一帧),然后在放元件的这一帧之后的那一帧开始运行你的程序。

第二,用另个一个swf来加载需要做loading的swf。这种方法可以有比较完整的加载进度条以及百分比文字,缺点是容易引起其他问题,这个后面会讨论。

举个例子来说,我想为A2.SWF做一个loading,关键代码如下:

......
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS ,loadProgress);
this.loaderInfo.addEventListener(Event.COMPLETE ,loadComplete);
......
AS3.0中增加了一个新的loaderInfo类来提供已加载的swf、图像文件的信息。flashplayer通过调度ProgressEvent对象的loadProgress方法来实现对加载内容反馈,当加载完成后,flashplayer再调度Event对象的loadComple方法。loadProgress方法是定义加载进度的方法,所有有关加载的信息都可以在这个方法中加以反馈:

......
private function LoadProgress(e:ProgressEvent)
{
    var loaded:uint=e.bytesLoaded;
    var total:uint=e.bytesTotal;
    var percent:Number=int((loaded/total)*100);
    trace(percent+"%");
}
......
上面的代码输出正在载入内容的百分比,你完全可以在这段代码中加入你自己的元素来丰富你的loading的内容,从而使得用户在等待过程中能够清楚的知道下载的进度,这样我们就有必要制作一个精美的小动画了。当加载完成后,就可以执行loadComplete这个方法。在loadComplete方法里添加你想要的动作,常常大家会放一个播放的按钮,让用户通过按这个按钮进入真正的动画。
这里我们要注意,直接在swf上添加loading可能会导致loading不是从1%开始,我们可以用一个swf加载另一个swf的方法来实现完整的loading,比如,我想在A1.swf里加载A2.swf,那么在A1.swf的动画程序中使用loader加载A2.swf。值得注意的是,监听loader的加载进度需要使用loader的contentLoaderInfo属性,而不是loaderInfo。
由于A1.SWF只起到加载A2.SWF的作用,并没有其他显示内容,所以它本身的加载可以忽略不计,这种方法可以比较完整的展示A2.SWF的加载过程。但是,同时使用这种方法也引发了一些问题,比如你在A2.SWF里与web端进行通信,使用了loaderInfo的parameters属性,则你在用A1.SWF加载A2.SWF后,通信将失效。这是因为FlashVars HTML 参数只影响主swf(例子里为A1.SWF),就是说你可以在A1.SWF里完成通信,但是A2.SWF不行。所以,我们可以先在A1.SWF中获取到页面要传递的信息,然后再让A2.SWF从A1.SWF中获取这个信息就可以了。通常我是这样处理的,假如A1.SWF的文档类为Main.as,那么在Main.as中定义一个static的属性比如prama(public static var prama),用来保存传递的信息,然后再在A2.SWF中通过Main.prama获取这个信息。这样就间接实现了A2.SWF与web端的通信。

好了,今天主要是给大家介绍loading制作的基本原理,至于详细的loading你可以在网上找到很多,这里就不给大家讲了。

 

猜你喜欢