Flash游戏开发常用函数代
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-08
efaultvalue a_v.text=5; }else{ _global.a=Number(a_v.text)?Number(a_v.text):5; //trace(_global.a); } }; ■■■随机输出1到100而不从复的语句~~~ seq=newArray(100); pArray=newArray(100); functionmakeRandom(){ for(i=1;i<=100;i++){ seq[i]="A"; } } functionmRandom(){ while(true){ n=int(random(100))+1; if(seq[n]=="A"){ seq[n]="0"; break; } } return(n); } functionrArray(){ for(i=1;i<=100;i++){ pArray[i]=mRandom(); trace(pArray[i]); } } stop(); ■■■偷梁换柱~~~ 我们可以用这样一个技巧,在某些函数外部加一些东西而不需要了解函数的代码~~ 比如,假如当前有很多mc覆盖了onEnterFrame函数,我们可以这样了解那些在_root下的mc的onEnterFrame函 数是以什么顺序执行的: 代码: for(variin_root){ if(_root[i].onEnterFrame!=null){//如果这个Object实现了onEnterFrame接口的话 _root[i].oldFunc=_root[i].onEnterFrame;//首先保存原来的onEnterFrame的句柄 _root[i].onEnterFrame=function(){//然后开始替换了~~加上一层壳~~ trace(this+":onEnterFrameCalled."); this.oldFunc();//我们用保留的句柄调用原来的函数 trace(this+":onEnterFrameReturned."); } } } 如果要取消这些附加的操作: 代码: for(variin_root){ if(_root[i].oldFunc!=null){//如果发现改过得痕迹 _root[i].onEnterFrame=_root[i].oldFunc; delete(oldFunc); } } 呵呵这些操作的关键在于flash里面的引用机制: 所有函数名都是引用,而函数本身是浮在数据的海洋里面的。如果没有任何变量引用他,他就会被回收。如果有, 他就不会被回收。所以有着样一个有趣的事情:delete函数不会删掉任何东西,除了要求删掉的那个名字:(和Java 机制相似,而和C不同) a=function(){trace("Functionacalled");} b=a; delete(a);//除了a这个名字被删掉以外,没有任何事情发生 b(); 函数通过this得到其调用者的实例。 ■■■MovieClipPlus.as 定义了一些简单的MC操作 //画点:由于flash没有画点,那我们就画短线 MovieClip.prototype.point=OxMovieClipPoint; functionOxMovieClipPoint(x,y){ this.moveTo(x,y); this.lineTo(x+1,y); } //画矩形,左上角x1,y1右下角x2,y2,颜色rgb,不透明度alpha MovieClip.prototype.rect=OxMovieClipRect; functionOxMovieClipRect(x1,y1,x2,y2,rgb,alpha){ this.beginFill(rgb,alpha); this.moveTo(x1,y1); this.lineTo(x1,y2); this.lineTo(x2,y2); this.lineTo(x2,y1); this.lineTo(x1,y1); this.endFill(); } //画圆:这么bt的冬冬当然不是我写的,作者素JodyKeating //圆心x,y,半径r MovieClip.prototype.circle=OxMovieClipCircle; functionOxMovieClipCircle(x,y,r){ vara=r*0.414213562; varb=r*0.707106781; this.moveTo(x+r,y); this.curveTo(x+r,y-a,x+b,y-b); this.curveTo(x+a,y-r,x,y-r); this.curveTo(x-a,y-r,x-b,y-b); this.curveTo(x-r,y-a,x-r,y); this.curveTo(x-r,y+a,x-b,y+b); this.curveTo(x-a,y+r,x,y+r); this.curveTo(x+a,y+r,x+b,y+b); this.curveTo(x+r,y+a,x+r,y); } ■■■两点间的直线移动 vars=15; _root.onMouseDown=function(){ varoldM_x=_root._xmouse; varoldM_y=_root._ymouse; ax=aa._x; ay=aa._y; dis=Math.sqrt((oldM_x-ax)*(oldM_x-ax)+(oldM_y-ay)*(oldM_y-ay)); xa=(oldM_x-ax)/dis; ya=(oldM_y-ay)/dis; amove(); }; functionamove(){ onEnterFrame=function(){ aa._x+=s*xa; aa._y+=s*ya; if(Math.sqrt((aa._x-ax)*(aa._x-ax)+(aa._y-ay)*(aa._y-ay))>dis){ deleteonEnterFrame; } }; } ■■■计算两个对象之间/两点之间的距离(注册点) funct |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Flash游戏开发常用函数代的所有评论