日期:2013-12-21  浏览次数:20795 次

  对象数组

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

  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.cl