| ·好听的歌 | ·火影忍者 | ·繁体字转换 | ·在线听歌 | ·火影忍者漫画 | ·最新歌曲 | ·psp游戏下载 | ·photoshop | ·火星文 |
Flash特效制作常用的源代码大放送
作者:龙犊整理 文章来源:天极网 点击数: 更新时间:2006-7-31
随机输出1到100而不从复的语句:
| 以下是引用片段: seq = new Array(100); pArray = new Array(100); function makeRandom() { for (i=1; i<=100; i++) { seq[i] = "A"; } } function mRandom() { while (true) { n = int(random(100))+1; if (seq[n] == "A") { seq[n] = "0"; break; } } return (n); } function rArray() { for (i=1; i<=100; i++) { pArray[i] = mRandom(); trace(pArray[i]); } } stop(); |
偷梁换柱
我们可以用这样一个技巧,在某些函数外部加一些东西而不需要了解函数的代码~~
比如,假如当前有很多mc 覆盖了onEnterFrame函数,我们可以这样了解那些在_root下的mc 的onEnterFrame函
数是以什么顺序执行的:
代码:
| 以下是引用片段: for(var i in _root){ if(_root[i].onEnterFrame != null){//如果这个Object实现了onEnterFrame接口的话 _root[i].oldFunc = _root[i].onEnterFrame;//首先保存原来的onEnterFrame的句柄 _root[i].onEnterFrame = function(){//然后开始替换了~~加上一层壳~~ trace(this+ ": onEnterFrame Called."); this.oldFunc();//我们用保留的句柄调用原来的函数 trace(this+ ": onEnterFrame Returned."); } } } |
如果要取消这些附加的操作:
代码:
| 以下是引用片段: for(var i in _root){ if(_root[i].oldFunc!= null){//如果发现改过得痕迹 _root[i].onEnterFrame = _root[i].oldFunc; delete(oldFunc); } } |
呵呵这些操作的关键在于 Flash里面的引用机制:
所有函数名都是引用,而函数本身是浮在数据的海洋里面的。如果没有任何变量引用他,他就会被回收。如果有,
他就不会被回收。所以有着样一个有趣的事情:delete函数不会删掉任何东西,除了要求删掉的那个名字:(和java
机制相似,而和C不同)
| 以下是引用片段: a= function(){trace("Function a called");} b=a; delete(a);//除了a这个名字被删掉以外,没有任何事情发生 b(); |
函数通过this得到其调用者的实例。
MovieClipPlus.as
定义了一些简单的MC操作
//画点:由于Flash没有画点,那我们就画短线
| 以下是引用片段: MovieClip.prototype.point = OxMovieClipPoint; function OxMovieClipPoint(x, y) { this.moveTo(x, y); this.lineTo(x+1, y); } |
//画矩形,左上角x1,y1 右下角x2,y2, 颜色rgb, 不透明度alpha
| 以下是引用片段: MovieClip.prototype.rect = OxMovieClipRect; function OxMovieClipRect(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的冬冬当然不是我写的,作者素Jody Keating //圆心x,y ,半径r MovieClip.prototype.circle = OxMovieClipCircle; function OxMovieClipCircle(x, y, r) { var a = r*0.414213562; var b = 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); } |
网友评论
(评论内容只代表网友观点,与本站立场无关!)
相关文章
推荐文章
热门文章
您现在的位置: 


