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(){ |