现在有很多朋友都做flash,都用loading,而且下一个loading源文件也很方便,有的朋友在熟悉了使用以后,想了解这些as的原理,我在这里说一下我的个人理解,请包涵。原作:amonline
这是一个比较正规的loading这是他在第一帧的as:
byteloaded = _root.getBytesLoaded();
bytetotal = _root.getBytesTotal();
loaded = int(byteloaded /bytetotal * 100);
t = getTimer ();
percent = loaded + "% ( " + int(byteloaded/1000) + " K / " + int(bytetotal/1000)
+ " K )";
percent = percent + "下载速度:" + int(byteloaded/t) + " K/s";
load_bar.gotoAndStop( loaded );
timeloaded = int(t/1000);
timeremain = int(timeloaded * (bytetotal- byteloaded) / byteloaded);
timeremain = int(timeremain / 60) + "分''''" + int(timeremain % 60) + "秒"";
timeloaded = int(timeloaded / 60) + "\''''" + int(timeloaded % 60) + "\"";
downloadtime = "已用时间:" + timeloaded + "剩余时间:" + timeremain;
首先要说明的是int是取整数的意思。
我们可以知道byteloaded是已经下载的比特数,
bytetotal是文件整个的比特数,
loaded是已经下载的百分比,
t是工作到现在的毫秒数,
第一个percent是已经下载的百分比+已经下载的K数/总体的K数,形如:80%(1.2K/1.5K)
第二个percent是第一个percent+下载速度+K/s,本来下载速度应该是int(byteloaded*1000/t*1000)的就提前约分了吧,呵呵
形如:80%(1.2K/1.5K)下载速度:50K/s,这样percent是表示下载数文本框的ar, load_bar.gotoAndStop( loaded
)是关键,也就是你的进度条的长度到已经下载的百分比上停止,
我们的目的是让下载数与进度条同步!也既下载数与进度条长度是一一对应的!也就要注意你的进度条在scence 的名字是load_bar,
timeloaded是工作到现在的秒数,既工作到现在的毫秒数/1000,这是一个中间变量,一会儿就变了,
第一个timeremain是通过目前的进度预测剩余的秒数,这个应用方程会解吧,呵呵
第二个timeremain是在第一个timeremain的基础上算出是几分几秒,大家看int(timeremain / 60)是算分,
int(timeremain % 60)是算秒,
同理第二个timeloaded是在第一个timeloaded的基础上算出是几分几秒,
downloadtime就简单了,大家都可以看出来了。
注意的是:
(1)进度条在scence 的名字是load_bar
(2)一个文本框的ar是percent
(3)一个文本框的ar是downloadtime 这是他在第十三帧的as:
if (byteloaded == bytetotal) {
gotoAndPlay("end");
} else {
gotoAndPlay("loop");
}
就是说,没下载完继续下载,
下载完就不下载了(废话),播放下载完的动画。