精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网页软件>FLASH教程>正文

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


来源:天极 时间:07-04-04 点击: 点击这里收藏本文

  对象数组

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

 

  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);
  }
  };
  

 

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

 

9 7 3 1 2 3 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.