您的位置: 首页 >> 新闻中心 >> 计算机 >> 设计制作
怎样合并不同帧频(fps)的Flash文件
精英教育阅读提示:Flash中要合并不同帧频(fps)的文件的确问题是一个令人困扰的话题,因为Flash本身并不提供任何动态改变帧速的函数。
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
北 师 大 平面设计创意全科班电话预约北京师范大学¥1300
理工文化 平面设计取证班电话预约理工大学教学¥1078
金 同 方 CAD绘图全天班电话预约人大总部¥568
金 同 方 苹果平面设计全天班电话预约人大总部¥960
理工文化 平面设计提高班电话预约理工大学教学¥2891
 

  也无法写一个通用函数来达到这一目的。但凡事只要开动脑筋,总有解决办法。下面我们分情况讨论。

  一. 需要合并的几个flash文件完全独立

  在大多数情况下,如果只需要把这些swf文件串起来逐一播放,不需要进行嵌套,单纯让每段swf按照它自己的速度播放,是完全可行的,只需要加少量脚本。

  例如:你有3个swf文件,分别命名为:movie.swf,movie1.swf,movie2.swf。

  只需要在movie.fla的最后一帧加上一句脚本:loadMovieNum("movie1.swf", 0);
  在movie1.fla的最后一帧同样加上一句脚本loadMovieNum("movie2.swf", 0)。
 
  注意,使用这种方法时,如果在动画的最前面加了loading脚本,它检测的载入是否完成只是针对第一段,如果需要检测所有片段是否已经载入,需要更复杂的脚本。

  二. 合并的flash文件需要进行嵌套播放

  这种情况比较麻烦,因为试图找出一劳永逸的方法似乎是不可能的。只能改啊改的,我讨厌重复劳动。

  假设子体只包括跳转语句(stop、play、gotoAndStop、gotoAndPlay)。母体需要加如下代码:

///////在第一帧插入如下代码////////
MovieClip.prototype.c_stop = ASnative(900, 13);
MovieClip.prototype.c_play = ASnative(900, 12);
MovieClip.prototype.c_gotoAndStop = ASnative(900, 17);
MovieClip.prototype.c_gotoAndPlay = ASnative(900, 16);
//重构跳转函数
MovieClip.prototype.stop = function() {
 this.stop_boolean = true;
 this.c_stop()
};
MovieClip.prototype.play = function() {
 this.stop_boolean = false;
 this.c_play()
};
MovieClip.prototype.gotoAndStop = function(n:Number) {
 this.stop_boolean = true;
 this.c_gotoAndStop(n)
};
MovieClip.prototype.gotoAndPlay = function(n:Number) {
 this.stop_boolean = false;
 this.c_gotoAndPlay(n)
};



//子体播放函数
function childRun(target_mc:MovieClip) {
 if (!target_mc.stop_boolean) {
  target_mc.nextFrame();
  if (target_mc._currentframe == target_mc._totalframes)
 }
 // 递归检查子MC
 for (i in target_mc) {
  if (target_mc._name)
 }
 //下面这句话很重要,它使你的高速动画能得到及时刷新,但相应的也提高了CPU的负载
 updateAfterEvent();
}

//加载侦听器
var mclListener:Object = new Object();
//当子体载入完成时,停止子体并控制其播放
mclListener.onLoadComplete = function(target_mc:MovieClip) {
 clearInterval(child_val);
 child_val = setInterval(childRun, fps, target_mc);
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);


///////在需要加载子体的位置插入如下代码////////
//子体的宿主
this.createEmptyMovieClip("子体", this.getNextHighestDepth());
//如果需要载入的swf帧速是60,那么fps=1000/60
var fps:Number = 1000/60;
image_mcl.loadClip("子体.swf", 子体);


  接着看一下子体文件,假设某帧上原来有下面的函数:

stop();
play_btn.onRelease = function() ;
gotoAndStop_btn.onRelease = function() ;

  需要把它们进行一下改造,把所有缺省调用的跳转语句改成"mc.+跳转语句"的方式:

this.stop();
play_btn.onRelease = function() ;
gotoAndStop_btn.onRelease = function() ;

  注意:别忘了改造子体中所有含有跳转语句的脚本(nextFrame和prevFrame不用改),如果子体含有onEnterFrame程序,请改成SetInterval方式。如果你的子体在某一帧包括的MovieClip超过了256个,会出现递归溢出的错误,

本新闻共2页,当前在第1页  1  2

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享93折!
  2008美国夏令营启航!
美之旅官方报名网站
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:Flash ActionScript函数设计雪花动画
下一篇:Flash MX 2004 Media的多首mp3连放
 相关新闻
·Adobe Director 11已经正式发布·iPhone今年有望获得官方Flash支持
·苹果发布Aperture 2图形工具软件包·电影特效魔术师Houdini 9.1正式发布
·Adobe中国07年度数字艺术大赛颁奖典礼·作品备案中心保护原创设计作品版权
·Corel公司发布最新版CorelDraw X4·3DsMAX教程:用多边形制作精美匕首
·3DsMAX教程逼真三维火车站场景·Flash中怎样调用exe可执行文件?
·将swf文件设置可自动播放的exe文件·微软新专利——三维茶壶作用户界面
·维基搜索 人与机器的智商较量?·W3C公布HTML 5早期草稿
·绘画与平面设计之间的不同·Flash MX 2004 Media的多首mp3连放
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·用Photoshop制作逼真自然背景
·PhotoShop帮助Maya巧建模
·道字桌面的仿书法制造
·用Coreldraw绘制美丽国画荷花
·如何配色?无论新手老手,读下这篇文章相
·天使翅膀的制作
·Photoshop制作无缝贴图:Action动作集总
·photoshop学习方法总结
·学好平面设计的好方法
·[艺术设计专题]企业VI系统的简介和工作步
相关试题
·CEAC平面设计师考证之Photoshop考试试题
·你会吗 Adobe Photoshop 认证试题一
·武汉理工大学2003年艺术设计学院平面设计
·你会吗 Adobe Photoshop 认证试题三
·你会吗 Adobe Photoshop 认证试题二
相关热贴
·想学设计课啊,哪位帮我推荐一下~~
·制作个人简历九大标准
·给年轻设计师的十大忠告
·平面设计人员必读 (速读版)
·oracle下导出某用户所有表的方法
·计算机个人简历(英语)
·浅谈计算机课件制作
·一张图透彻讲解Photoshop蒙版
·Delphi中数据的自动录入
·Java与C和C++的比较