详细内容
合并帧频速率不同(fps)的Flash动画文件
合并帧频速率不同(fps)的Flash动画文件
1.假如有3个swf文件,分别命名为:movie.swf,movie1.swf,movie2.swf。
只需要在movie.fla的最后一帧加上一句脚本:loadMovieNum("movie1.swf", 0);
在movie1.fla的最后一帧同样加上一句脚本loadMovieNum("movie2.swf", 0)。
注意,使用这种方法时,如果在动画的最前面加了loading脚本,它检测的载入是否完成只是针对第一段,如果需要检测所有片段是否已经载入,需要更复杂的脚本。 网页教学网
2.合并的flash文件需要进行嵌套播放 Webjx.Com
这种情况比较麻烦,因为试图找出一劳永逸的方法似乎是不可能的。只能改啊改的,我讨厌重复劳动。
flashlt.Com
假设子体只包括跳转语句(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个,会出现递归溢出的错误。