快速业务通道

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

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13

  大家知道,当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,=是赋值,==才是等于,大家切记。 关键词:网页

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号