用户登陆|用户注册|建站服务|广告合作
您现在的位置: 首页 >> 设计之窗 >> FLASH >> 正文
站内搜索:
Flash制作青蛙跳荷叶游戏动画
[作者:smallerbird|来源:闪吧|时间:2007-12-08| 收藏 投稿 ]【

2) getSomeHy主要作用就是生成一个几行几列对队列。不知读者有没有发现:如果不按鼠标,青蛙就会随着荷叶来回移动,好像就停在上面。因为我们加了初使化语句:

  onEnterFrame不停的指定的:青蛙的坐标等于荷叶的坐标。

 

 

  //青蛙附上第一个荷叶
  mcPlayer.onEnterFrame = function() {
  this._x = mcHys.mcHy0_1._x;
  this._y = mcHys.mcHy0_1._y;
  };

 

  四、跳上荷叶

  效果及源代码下载:


效果4

 

  要让青蛙跳上荷叶,而且要随着荷叶移动。我们只要作到:青蛙的坐标等于荷叶的坐标;然后我们还要检测青蛙是否跳上荷叶呢?这个检测代码很显然要放在青蛙移动的代码之中: playerMove()。加入:

 

  //检测跳上
  //
  for (var mcI in _root.mcHys) {
  if(this.hitTest(_root.mcHys[mcI])){
  //贴上
  this.onEnterFrame=function(){
  this._x=_root.mcHys[mcI]._x
  this._y=_root.mcHys[mcI]._y
  }
  break;
  }
  }

  注:这里的检测效率不高,因为我们是检测所有的荷叶是否碰到青蛙,很显然,我们只要检测青蛙上一行的荷叶就可以了,这里的代码没有写出来。有兴趣的读者可以自己修改。

  五、背景的移动

  效果及源代码下载:

 

 


效果5

 

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

 

 

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

  注:读者会发现: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坐标,因为青蛙跳的距离是一定的。青蛙跳上荷叶不一定是会是最佳位置,所以要修正,不然后多跳几次,发现青蛙根本跳不到下个荷叶,不信的读者可以试一下。

  七、加上开始,结束

  1)到目前为止我们的青蛙还可以"漂”在水中,即使不跳到荷叶上。
  2)删除跳过的荷叶(上文提到的)

 

  效果及源代码下载:

 

 


效果7

 


  八、增加游戏的可玩性(吃小虫)。

  这个游戏大致最算做完了,只是觉得没有什么游戏性,那我们再加一个元素小虫,随机在荷叶中出现小虫,如果青蛙跳上有小虫的荷叶,就加10分。效果及源代码下载:


效果8

  程序思路:

  1)要在荷叶上出现小虫最简单的方法就是在mc荷叶符号,里加入一个图层,入一个mc的小虫,并命名一个名字。
  2)在产生荷叶的代码中加一个随机数。来判断是否显示,如果显示就设置所产生的荷叶中的"小虫"电影符号的alpha值为100,否则为0。
  3)在判断青蛙是否跳上荷叶的代码处加入一段代码:来判断当前的荷叶的小虫"电影符号的alpha值,如果是100就证明有小虫,分数加1。(分数我们可以一个_root.变量来存储)

 

 

  九、添加平面,效果

  效果:


最终效果


Tags:
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
快速注册通道
赛酷网·中国西部第一建站门户
关于我们 | 投稿指南 | 广告服务 | 建站服务 | 联系我们 | 网站地图 | 友情连接 | 诚征英才
地址:中国·昆明盘龙区丽水天锦A栋15楼A06 服务热线:0871-5610002 5732371联系我55693344 联系我80796509
建站交流群:17577271 下载交流群:11885804 22003060 35468519 交流论坛
© CopyRight 2005-2007, Syku.Net, Inc. All Rights Reserved
赛酷网络版权所有 滇ICP备05000398号