首页搜索健康笑话音乐论坛游戏聊天FLASH信箱交友域名电影娱乐域名注册虚拟主机域名+空间158元
收藏本站
设为首页
 BANNER欣赏
润东链|网站PR值查询|免费二级域名|免费友情链接|免费邮箱
用Flash动作脚本(Action Script)制作电影精确预载
作者:这个破网
来源:今晚在线
点击次数:22547
2003-6-7 8:48:27


〓简介〓
flash虽然采用了流技术,但是对于大部分拨号用户要观看一个较大的FLASH动画还是会断断续续的播放,好在FLASH提供了预载功能,这样就可以等动画全部下载完毕再来观看了,现在许多优秀的动画几乎都提供了预载,下面就让我来介绍如何用FLASH作精确预载吧!

〓正文〓
  以下文字仅以flash MX版本为准由于是技巧类教程文献,一些基本的制作方法这里就不再嗷述了!
  [1]首先,新建在FLASH里,新建一个300*200电影文件保存为TOL8load

  [2]把主场景命名为loaded,给场景命名的方法:打开window下拉菜单里点击scene按钮打开场景的浮动窗口(快捷键为:Shift+F12)双击浮动窗口里默认主场景名称一般为:scene 1,更改为loaded 如图1
点击打开此图片

  [3]下面我们在主场景loaded里建三个层,并将层名分别改为,blank,(用来放一些装饰界面的MC),action(用来放置点应当中所有的动作脚本)和层MV(用来放置预载的电影)如图1-2
点击打开此图片

  [4]紧接着,我们在主场景1帧,10帧,15帧建立三个关键帧,建立方法用鼠标左键单击该帧成亮蓝色,按下F6键!分别给这三个帧标签为T1,T2,T3。命名方法window下拉菜单里打开Properties属性面板(快捷键为:Ctrl+F3)。然后鼠标点击所要标签的帧,在刚刚打开的属性面板里Frame下添上帧名即可!如图2
点击打开此图片

  [5]既然我们做的是精确预载那一定在预载的同时能够显示电影的总帧数,已下载的帧数,下载百分比,已用时间,剩余时间,最好还能够有一个下载的进度条,呵呵,下面就让我们来一一实现吧。首先我们在MV层(layer)里做三个显示下载参数的文本框textfield!注意一定要将其属性设为可编辑类型(Dynamic Text),方法:鼠标左键选中要进行操作的文本框后,我们在第三步打开的属性面板里立刻显示了改文本框的属性,在Text Options选项里电击下拉菜单将textfield属性更改为Dynamic Text,并将其变量名分别设定为AF_txt, LF_txt, Ts  如图3
点击打开此图片

  [6]接下来我们要新建一个下载进度条的电影片段符号,如何创建符号基础性的东西我想我就不用再罗嗦了吧,需要注意的是,这个进度条得是100帧至于为何后面我们将会讲到。  至于如何设计要看您聪明的脑袋了,我这里就用一个简单的变长的长方体来做进度条了!进度条的第一帧,和最后一帧都用动作脚本(以下简称AS)定位stop();  如何给帧加动作脚本呢?在FLASH MX里按一下F9,弹出Action Script窗口,然后用鼠标选中需要加脚本的帧这里我们选中第一帧激活Action Script窗口,然后在专家模式下输入stop(); 或者在专家模式下双击AS面板里的名令stop就行了,注意大小写!如图4-1
点击打开此图片

  [7]紧接着,我们进入AS编程阶段,我们做了半天实际上下面这几步才是这个实例中关键的关键所在,让我们先把制作好的下载进度条,和三个文本框摆放好位置,全部放在层MV的第一帧里,然后打开AS脚本添加面板(快捷键F9)将下面的脚本复制到层action的第一帧里,别忘记第一帧的标签是T1,成功后第一帧将出现一个小a的字母!
// 获取电影的总帧数
//FLASH 5 版本语句改为AllFrames = _framesloaded();
AllFrames = _totalframes;
// 获取电影已下载的帧数
//FLASH 5 版本语句改为LoadedFrames = _framesloaded();
LoadedFrames = _framesloaded;
// 获取电影的总字节数
AllBytes = _root.getBytesTotal();
// 获取以下载字节数
LoadedBytes = _root.getBytesLoaded();
// 计算下载百分比
Ts = int(LoadedBytes/AllBytes*100);
// 定义预载电影的播放进度!
// 这里的进度条是100帧!当下载完毕刚好是100,
// 用下面的语句控制进度条当下载完毕进度条MC正好播放完毕!
load_bar.gotoAndStop(Ts);
// 最后写入文本框的部分!
AFtxt = "总帧数:"+AllFrames;
LFtxt = "还剩:"+int(AllFrames-LoadedFrames)+" 帧";
Ts = "已下载:"+Ts+"%";

如图5
点击打开此图片
依照上面的方法给标签为T2的10帧加上下面这段代码:
// 条件判断,以下在帧数是否等于总帧数,如果是则开始播放电影部分T3
// 如果不是则继续循环播放预在部分!
if (LoadedBytes == AllBytes) {
gotoAndPlay("T3");
} else {
gotoAndPlay("T1");
}


  [8] 哦!对了,差点忘记我们还得把拖放的主场景当中的进度条命名为loaded_bar
具体方法:在WINDOW下拉菜单里打开Properties属性面板,在主场景中选中进度条激活进度条的属性,在Instance Name里给这段电影命名为:loaded_bar
看图6
点击打开此图片

  [9]现在您就可以按Ctrl+Enter导出SWF文件测试了,由于个人水平有限加之时间仓促文中如有遗漏或错误请谅解,如果你愿意可以到论坛给我们提出宝贵意见

===>下载源文件

===>观看演示

 


企业邮局|免费统计|域名申请|虚拟空间|论坛空间|ASP空间|域名查询|注册域名|国际域名|国内域名|网站空间|域名whois查询|英文域名|中文域名