顶部468*60ad 顶部468*60ad 顶部468*60ad 顶部468*60ad

Flash制作青蛙跳荷叶游戏动画

2007-12-03 21:04:48  来源:闪吧 smallerbird

  五、背景的移动

  效果及源代码下载:

网页教学网


效果5

Webjx.Com

  现在青蛙可以跳上荷叶,可是只能在这小范围运动,我们要让青蛙走的更远。如何移动背景呢?只要把荷叶容器mcHys的Y坐标递增,看上去青蛙就向上移动了。把: playerMove()中的this._y -= this.numMoveSd;
  修改为:
  //移动背景
  _root.mcHys._y += this.numMoveSd; 网页教学网

  背景移动了:
  最忘了复制一行新的荷叶
  getOneHy(3, mcHys);
  当然也不要忘了删除跳过的荷叶:(后面的版本会加上这个) Webjx.Com

  注:读者会发现:getSomeHy这个函数不见,而换成了一个:getOneHy,因为笔者发现在复制一行要比复制几行的功能更适合,这个游戏。

  六、更像是跳到荷叶

  效果及源代码下载:


效果6

  我现在的青蛙可以跳上荷叶了,不过问题是好像不太逼真:青蛙总是落在荷叶的正中,而且从就自算青蛙落在荷叶的边上也会变到荷叶的正中,所以我们要修正它:

  我们还是要修改:playerMove()这个函数:

  //检测跳上
  //
  for (var mcI in _root.mcHys) {
  if (this.hitTest(_root.mcHys[mcI])) {
  //
  var numTemPlayHeCha:Number = this._x-_root.mcHys[mcI]._x;
  //
  getOneHy(3, mcHys);
  //贴上
  this.onEnterFrame = function() {
  //移动荷叶中心_x      
  this._x = _root.mcHys[mcI]._x+numTemPlayHeCha;
  //end if  
  //移动荷叶中心_y 
  if (this.numOnHysY != _root.mcHys[mcI]._y) {
  if ((this.numOnHysY-this.numToHySd)>_root.mcHys[mcI]._y) {
  _root.mcHys._y += this.numToHySd;
  mcPlayer.numOnHysY -= this.numToHySd;
  } else {
  var temaaa:Number = Math.abs(mcPlayer.numOnHysY-_root.mcHys[mcI]._y);
  _root.mcHys._y += temaaa;
  mcPlayer.numOnHysY -= temaaa;

  }
  //end if
  }
  //end if     
  };
  break;
  }
  }

   程序思路:分别处理青蛙的x坐标和y坐标:

  1)青蛙落在荷叶哪一个部位,就在这停在荷叶的哪个部位。
  this._x = _root.mcHys[mcI]._x+numTemPlayHeCha;
  2)青蛙y坐标慢慢移动到荷叶的y坐标。为什么一定要移动到荷叶的y坐标,因为青蛙跳的距离是一定的。青蛙跳上荷叶不一定是会是最佳位置,所以要修正,不然后多跳几次,发现青蛙根本跳不到下个荷叶,不信的读者可以试一下。 Webjx.Com

文章评论

共有 0 位网友发表了评论 查看完整内容