最近开发任务不太重,和设计部门的同事门学习了一下FLASH的制作。
作为初级学习,首先学习了怎么做FLASH的进度条。这个是最常用到也是最基本的。
搞了一早上,终于基本明白了,图层、祯、元件、场景之间的关系
图层:和PHOTOSHOP中的概念一样。
祯:每个动作就是一祯。
元件:FLASH中的基本单位,每一个东西都是一个元件,类似.NET中对象的概念。
场景:一个SWF文件中可以有多个场景,就好象.NET中一个.CS文件中可以编写多个类一样。
元件被放在层中,多个层在一个瞬间的动作形成一祯,一系列的祯组成一个场景,在需要的情况下多个场景就组成了一个SWF播放文件。
前一个祯播放后就紧接着播放第二个祯,当前一个场景的祯播放完后紧接着播放第二个场景的祯,当所有的场景都播放完后,又重复再播放一次,当然,这里是可以再设置的。
要在第某祯停止播放可以用stop() 方法,要跳转到某祯可以用gotoAndPlay(数字)----[跳转并继续播放]或gotoAndStop(数字)---[跳转并停止] 方法,如果是在代码所在场景或元件下进行跳转直接用方法就行了,如果是需要某元件内的祯跳转,需要用该元件内部的这两个方法 就像在.NET中 用一个实例的对象的方法一样。
还有很多,我就不废话了。
进度的基本原理就是在第一个场景的第一祯获得当前SWF文件的总大小和当前下载的大小(FLASH有getBytesLoaded()和getBytesTotle()两个方法可以很方便的获得这两个数字),然后通过这个数字计算出百分比做为参数来控制一个进度条显示的元件,在这个事情瞬间处理完成后,第二祯会立刻运行,在第二祯,再判断当前下载的文件大小和总大小是否已经下载完毕,如果没有,跳回到第一祯,如果下载完毕,就继续播放下一个真正的影片场景或可以再加入其他处理。
基本原理在搞懂一些概念后其实还是蛮简单的。晚上很多教程很大篇,实际上都在控制样式什么的,真正的核心代码不过就5,6句就完了。
第一祯,读取当前下载大小和总大小,然后我通过计算来控制我的进度元件。
a.text="总文件大小:"+getBytesTotal()+"字节";
b.text="现下载"+getBytesLoaded()+"字节";
pro.gotoAndStop(int(getBytesLoaded()/getBytesTotal()*100));
第二祯,判断下载大小是不是小于总大小,如果小于总大小,说明没下完,返回到第一祯,如果不小于,说明下载完了,那么就停下来,我的第二祯是有个按钮的,如果不需要用户触发事件才继续播放可以直接不用STOP()方法
if(getBytesLoaded()<getBytesTotal())
{
gotoAndPlay(1);
}
else
{
stop();
}