快速业务通道

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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号