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

2008-02-23 06:17:17来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

对象数组

  比如要构建一个有很多属性的数组,简单的能够这样做:

以下是引用片段:
  var a:Array = new Array();
  for (var i = 0; i<10; i ) {
  a[i] = new Object();
  a[i].x = 10;
  a[i].y = 10*i;
  a[i].name = "---";
  a[i].id = i;
  // 随便您给什么属性啊。
  }
  ////先用局部变量存储对象会更好一点。
  var a=new Array()
  for(var i=0;i<10;i ){
  var ta=new Object();
  ta.x=10;
  ta.y=10;
  ta.name="n" i;
  a.push(ta);
  }
  ////或更简便一点的方法:
  var a=new Array()
  for(var i=0;i<10;i ){
  a[i]={x:10,y:10,name:"n" i}
  }

  程式控制角色运动

  下面这段代码控制 MovieClip mc 从 (50,50) 横向运动到(100,50) 停止,速度为 5 pixel:

以下是引用片段:
  mc._x = mc._y=50;
  mc.onEnterFrame = function() {
  _x = 5;
  trace(_x);
  if (_x == 100) {
  delete (mc.onEnterFrame);
  }
  };

  精确计时

  我们设定了时间为 60 秒,然后通过 setInterval 来定期(每1000milliseconds)触发一个函数 runTimer。

  function runTimer 用来计时,当时间到了以后,转去执行 outThere。

  function outThere 用来处理时间到了以后的动作,不要忘记 clearInterval(intervalID),停止计时。

以下是引用片段:
  var time:Number = 60;
  var intervalID:Number;
  intervalID = setInterval(runTimer, 1000);
  function runTimer() {
  time--;
  trace(time);
  if (time == 0) {
  outThere();
  }
  }
  function outThere() {
  // blah blah blah
  clearInterval(intervalID);
  }

  找到现在最小的一个可用的深度 Depth(来自外国)

  针对 Flash Player 6 的:

  

以下是引用片段:
availTopDepth = function () {
  var allDepths = [];
  for (var z in _root) {
  if (_root[z] instanceof Button || _root[z] instanceof MovieClip || _root[z] instanceof TextField) {
  allDepths.push(_root[z].getDepth());
  }
  }
  if (allDepths.length != 0) {
  sortAll = function (a, b) { if (ab) {return 1;} else {return 0;}};
  allDepths.sort(sortAll);
  return (parseInt(allDepths[allDepths.length-1]) 1);
  }
  };
  trace(_root.availTopDepth());
  放置一个 MovieClip 在 Stage,再执行这段 Action 就会得到最近的一个可用深度。我们也能够用这个来创建绝对不

  会出问题的 MovieClip,比如:

  _root.createEmptyMovieClip("mc_name", availTopDepth());

  getNextHighestDepth() 连同 getInstanceAtDepth(depth)是 for player 7 的。

  鼠标消隐

  鼠标消隐之后,右健弹出菜单,鼠标就又出现了,并且一直保留着~

  完整的解决方法是:在 左健抬起、右健第二次抬起、回车键抬起的时候再次消隐鼠标。

  完整的方法比较复杂,下面是个简单的解决方法,能够解决绝大多数的问题:

以下是引用片段:
  onEnterFrame=function(){
  if(Key.isDown(1)|| Key.isDown(Key.ENTER)){
  Mouse.hide();
  }
  }

  我常用的一个加速度移动的代码

以下是引用片段:
  //以下代码放到主场景第一帧
  stop();
  _global.a = 5;
  //移动加速度,越大越慢
  _global.click_x = 0;
  //用来记录点击鼠标的位置
  _global.click_y = 0;
  _root.onMouseDown = function() {
  _global.click_x = _root._xmouse;
  _global.click_y = _root._ymouse;
  //me是受控mc的instance name
  me.onEnterFrame = function() {
  if (Math.abs(_global.click_x-me._x)<2 && Math.abs(_global.click_y-me._y)<2) {
  //假如已基本移到了鼠标点过的位置就取消这个事件句柄的响应程式
  delete (this.onEnterFrame);
  return;
  } else {
  //控制移动
  me._x = (_global.click_x-me._x)/_global.a;
  me._y = (_global.click_y-me._y)/_global.a;
  }
  };
  };
  //////以下部分可选
  //a_v是个能够输入的文本框,用来输入加速度,即能够自定义速度,方便调试
  a_v.onChanged = function() {
  if (a_v.text == "" || Number(a_v.text)>1000 || Number(a_v.text)<0) {
  //default value
  a_v.text = 5;
  } else {
  _global.a = Number(a_v.text) ? Number(a_v.text) : 5;
  //trace(_global.a);
  }
  };
  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Photoshop结合Dreamweaver制作网页相册

下一篇: Dreamweaver制作网页实用七招