}
};
随机输出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;