大量计算分帧方法(源文件、例) |
| 作者:佚名 来源:不详 更新:2007-1-13 20:46:21 错误报告 我要投稿 |
先看看例子 -----------------------------------------------------------------------------------------
点击浏览该文件
-----------------------------------------------------------------------------------------
思路:计算所消耗的时间来判断是否将余下的计算工作留到后面的帧,代码如下:
------------------------------------------------------------------------------------------ function js(fun:Function){ _root.msg="正在计算中...[0%]"; _root.lp.gotoAndStop(1); _root.st=new Date(); _root.createEmptyMovieClip("__js",_root.getNextHighestDepth()); var tag=_root.__js; tag.limitTime=int(1000/50); tag.sttime=(new Date()).getTime(); tag.nowN=0; tag.sum=0; tag.ltag=_root.lp; //进度条 tag.fun=fun; //回调函数 tag.timeSum=0; //总时间 tag.N=Number(_root.n.text)*10000; tag.onEnterFrame=function(){ var st=(new Date()).getTime(); var b=(new Date()).getTime(); var end=false; while((b-st)<this.limitTime) //如果这一帧的计算时间已经超过这一帧应有的时间,就跳出。 { if(this.nowN<this.N) { //-------------------计算部分 this.sum+=this.nowN; this.nowN++; //----------------------------- }else { end=true; break; } b=(new Date()).getTime(); } _root.msg="正在计算中...["+int(this.nowN*10000/this.N)/100+"%]"; this.ltag.gotoAndStop((int(this.nowN*100/this.N)+1)); trace("一帧"); if(end){ this.timeSum=(b-this.sttime); _root.msg="计算结束,共用时"+this.timeSum+"毫秒,结果为"+this.sum+"。"; this.fun(this); delete this.onEnterFrame; } }; } function callBack(tag) //回调函数 { tag.removeMovieClip(); //清理计算用的mc trace("结果="+tag.sum+"\r时间="+tag.timeSum); }
--------------------------------------------------------------------------------------------
源文件 ----------------------------------------------------------------------------------------
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |