Flash网页制作之详谈loading的制作

2008-04-02 11:04:43来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  大家知道,当flash影片或网页体积相当大的时候,等待页面的出现是很枯燥的,所以loading的概念就产生了

  loading的制作方法有许多许多种,今天详谈一种。

  好了,转入正题。

  首先,CTRL+F8新建一个电影剪辑(MC),命名为loading。

  


  然后,进入这个MC,做一个方框,不带边框,只留填充色,选中方框,按F8转换为图像元件。然后按F6在第100帧做一个关键帧。回到第一帧,用自由变形工具(Q),将loading条从左或右像中间拖,拖至一条线为止,然后从第一帧做补间。这样loading动画就是个从中间向两边延伸的,至于为什么要做100帧的渐变动画,那就是配合100%的AS咯,到100%下载的时候,这个条就延伸完毕咯!

  接下来,将名字为loading的MC拖入场景种的第一层,放到合适位置,点F5延长一帧。将MC实例命名为loading。

  


  然后进入我们的AS部分。

  在主场景中新建一层,点击F6延长出一个关键帧,因为第一帧是空白帧,所以第二帧也延长出一个空白关键帧了。

  


  第一帧写入AS:

  a=getBytesLoaded(); //a定义为getBytesLoaded()

  b=getBytesTotal(); //b定义为getBytesTotal()

  loaded=int(a/b*100); //定义为a除以b再乘以100,目的是求个百分整数,其实对于这个loading的效果不大,但是打个基础,对于以后功能周详的loading有用。

  loading . gotoAndPlay( loaded ); //loading这里就是场景中实例命名的那个loading,在下载的同时,运行这个MC,配合上面的百分整数显示整个下载过程。

  第二帧写入AS:

  if(a==b){ //假如a的值,就是下载的总值等于flash本身的总值,执行下列语句

  nextScene(); //转到下个场景,这里能够看到,这里的主动画和loading场景是不同的,所以我们要用shift f2再建立一个新场景,放入主动画,而且必须在loading场景的下面。

  }else{ //其他情况,就是说a不等于b,多半是没有load完的情况下、

  gotoAndPlay(1); //回到第一帧,这样做一个循环,当loading不成功的情况下,回到第一帧重新执行下载。

  }

  这样就完成了,切记,主动画要放在另外一个场景且在loading场景之下。

  这次我们介绍用AS配合动态连同静态文本来完成显示详尽下载进程,临时再决定加上百分数的显示。

  上次介绍了进度条,这次就不说了,直接进入百分数连同下载进程。

  首先在场景用静态文本在合适的7个合适的位置分别写上:总字节数、已下载字节数、总帧数、已下载帧数、需要时间、实际已用时间和“%”,然后时间轴上用F5延长出一个帧。

  然后分别在前六个的右边用动态文本拉出6个合适大小的框,不写任何东西,在“%”的右边用动态文本拉出一个3个字位数的框。

  然后分别在属性框里给对应静态文本的动态文本框加变量:

  总字节数:aby

  已下载字节数:bby

  总帧数:af

  已下载帧数:bf

  需要时间:at

  实际已用时间:bt

  %:loaded

  


  然后新建一层,命名为AS(这并不重要,但是养成一个会分门别类的好习惯,大家以后看我放的源文档,不管是层名、还是库里面,我都会分门别类放好,多的时候会建立相应文档夹,这样方便大家找到源文档里面想要的东西),点F6延长出一个关键帧

  然后第一帧写入as:

  a=getBytesTotal(); //b定义为已下载总字节数

  b=getBytesLoaded(); //a定义为需要下载的总字节数

  loaded=int(b/a*100); //给变量名为loaded的动态文本框显示出需要下载字节数和已下载总字节数的百分比,想但简单,就是个数学式,b除以a再乘以100

  aby=_root.getBytesTotal(); //给变量名为aby的动态文本框显示出需要下载的总字节数

  bby=_root.getBytesLoaded(); //给变量名为bby的动态文本框显示出已下载总字节数

  af=_root._totalframes; //给变量名为af的动态文本框显示出总帧数

  bf=_root._framesloaded; //给变量名为bf的动态文本框显示出已下载帧数

  at=int(((aby-bby)/(bby/bt)) bt); //给变量名为at的动态文本框显示出总时间,这里也看得出是个数学式

  bt=int((getTimer())/1000); //给变量名为bt的动态文框显示出已用时间,1000是以毫秒计的。

  然后在第二帧写入as:

  if(a==b){ //假如实际下载的总字节数等于需要下载的总字节数那么,接下句

  nextScene(); //转到下一个场景,也就是说还跟昨天相同,要将主动画放到loading场景之下的一个场景

  }else{ //其他的,也就是以上条件不能达成

  gotoAndPlay(1); //回到并播放第一帧,这样做一个循环,下载不成功就做到重新下载。

  }

  这样就全部完成了,大家看到AS跟数学很有关系,int这个语句其实是Mathround的简化方式,而大家在第二帧第一行里面的if(a==b)注意千万不要写成a=b,=是赋值,==才是等于,大家切记。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: FLASH打造LRC歌词播放器

下一篇: 在SWF中获取HTML网页参数