|
loading的制作方法 |
Author:咖啡虫 PublishTime:2005-4-8 |
loading的原理是在要播放一个大的flash动画时,flash是采用边下载边播放的模式,就是下载了多少播放多少,而当文件比较大时,下载的速度很慢,所以播放起来经常会出现中断的情况,所以可以先制作一段小的动画,在没有完全下载完大的动画前,播放小的动画,当然在这小动画里,可以用as显示出下载的进度,时间等等.下面我就来告诉大家制作的过程.
版本:flash 6.0 . 这个loading比较简单,需要用的actonscript有:getBytesLoaded() 获取已下载的字节数,getBytesTotal() 获取总字节数. 首先新建一元件,命名进度条.做一个形状渐变就可以了.这个不需要我教了吧.记得在开始帧和结尾帧上添加动作 stop(): 回到主场景中,把进度条拖到适当位置.并在属性中命名为 jindu.下面我们就该在帧上添加动作了: x=root.getBytesLoaded(); //把已经下载的字节数赋值给变量x; y=root.getBytesTotal(); // 把动画的总字节数赋值给变量y z=Int((x/y)*100); // 100这个数呢是不固定的,如果你的进度条有100帧 就写100,如果是50帧就写50. x/y是算出已经下载的电影剪辑占全部动画的百分比,由于进度条是100帧,所以乘以100是判断根据当前的进度,应该是显示进度条的哪一帧. Int 是转换成整数的函数,因为因为x/y*100这个表达式可能是浮点数,就是带有小数点,而进度条的帧数是个整数,所以把他换成整数. 转换成整数后赋值给变量z. jindu.gotoandStop(z); // 大家看到这里是否明白上一个表达式的意义了呢?呵呵,我来解释一下,这个语句是命令播放头根据刚才算出的结果去跳到进度条的相应的帧数并停止,大家是不是明白这个道理了呢?也可以用tellTarget("jindu"){gotoandStop(z)}这个函数 if(x==y){ goandPlay("start")} else{ gotoandPlay("load") } // 判断语句, 如果x(已经下载的电影剪辑的字节数)等于y(整个电影剪辑的字节数).播放头跳到帧标签为"start"的帧,并开始播放."start"这个标签当然是主动画的开始帧了.这个相信聪明的你一定明白的.else 否则 goandpaly("load")播放头跳到帧标签为load的帧并开始播放.这个语句的意思是如果已经下载的电影剪辑的字节数不等于整个电影剪辑的字节数(就是没有完全下载下来),那么就去播放load. "load"在哪命名你一定知道了吧?呵呵 对了!就是loading 的第一帧啊. 好了.第一个方法讲完了.如果你耐心的看完我罗索的这些话,相信你现在自己一定能独立制作一个简单的loading了.
[原创]loading的制作方法2
方法2: 版本 flash6.0 as : getBytesLoaded() ; getBytesTotal() ;getTime(); 步骤1: 当然是制作进度条了,呵呵. 步骤2: 把进度条拖到场景中后,命名为jindu.另外在主场景中加入三个动态文本框,分别给动态 文本的变量命名为x1,x2,x3. 步骤3: 计算已经下载的百分数. 动作语句: x= getBytesLoaded(); y= getBytesTotal(); z= Int(x/y*100) x1= z + "%"+" " + x/1000+"k/"+y/1000 ="k" // 在动态文本框x1中输出: z(已经下载的百分比)+"%" 其输出的形式是这样 20%. "%"用连接运算符" +" 连接起来.然后输出一个空格,再输出 x/1000 ,x是已经下载的电影剪辑字节数.因为单位是字节所以除以1000转换成"kb",y/1000也是同样道理;这个语句的最后输出格式为: 20% 40k/200k 步骤4: 计算下载速度 time=getTime()/1000 //getTime是获得从开始到现在得时间,单位是毫秒,所以除以 1000转换成s秒. x2=Int(x/1000/time) +"kb/每秒" //算出下载速度 kb/每秒 显示. 这个不用我解释了吧. 步骤5: 显示时间比,已用时间/总时间 x3=time/1000 + "秒/" + Int(y/1000/x2) +"秒" // 已用得时间上面解释过了.用总得字节数除以1000转换成kb再除以下载速度就算出了下载整个电影剪辑需要得时间.最后输出格式为 12秒/20秒 步骤6: 就是方法1后面得语句了 indu.gotoandStop(z); if(x==y){ goandPlay("start")} else{ gotoandPlay("load") } |
| | |