您现在的位置: 丁丁家园 >> 网上学院 >> 网页设计 >> Flash >> 文章正文
CN域名1元/年 | 高清晰图库
    

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

        ★★★
【字体:
·好听的歌 ·火影忍者 ·繁体字转换 ·在线听歌 ·火影忍者漫画 ·最新歌曲 ·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);
  }

 

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口推荐赚点

网友评论

【发表评论】
(评论内容只代表网友观点,与本站立场无关!)

本频道栏目分类导航