推荐给好友 上一篇 | 下一篇

Flash特效制作常用的源代码大放送

 

}

};

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


53/5<12345>
 

评分:0

我来说两句

seccode