闪吧论坛's Archiver

smallerbird 发表于 2007-11-28 10:34

一步一步制作flash游戏青蛙(源代码)2

一步一步制作flash游戏青蛙(源代码)2
游戏的最终效果

[url=http://www.mygamemylove.com/demo/qingwua/98.swf]http://www.mygamemylove.com/demo/qingwua/98.swf[/url]

[b]相关教程[/b]

一.青蛙跳动起来!
[url=http://www.mygamemylove.com/105.html]http://www.mygamemylove.com/105.html[/url]
二.来回移动的荷叶。
[url=http://www.mygamemylove.com/104.html]http://www.mygamemylove.com/104.html[/url]
三.修改"来回移动的荷叶”
[url=http://www.mygamemylove.com/103.html]http://www.mygamemylove.com/103.html[/url]
四.跳上荷叶!
[url=http://www.mygamemylove.com/106.html]http://www.mygamemylove.com/106.html[/url]
五.背景的移动
[url=http://www.mygamemylove.com/102.html]http://www.mygamemylove.com/102.html[/url]
六.更像是跳到荷叶
[url=http://www.mygamemylove.com/101.html]http://www.mygamemylove.com/101.html[/url]
七.加上开始,结束
[url=http://www.mygamemylove.com/100.html]http://www.mygamemylove.com/100.html[/url]
八.增加游戏的可玩性(吃小虫)。
[url=http://www.mygamemylove.com/99.html]http://www.mygamemylove.com/99.html [/url]
九.添加平面,效果.
[url=http://www.mygamemylove.com/demo/qingwua/98.swf]http://www.mygamemylove.com/demo/qingwua/98.swf[/url]
[b]五.背景的移动 [/b]

效果及源代码下载:
[url=http://www.mygamemylove.com/102.html]http://www.mygamemylove.com/102.html[/url]

现在青蛙可以跳上荷叶,可是只能在这小范围运动,我们要让青蛙走的更远。如何移动背景呢?只要把荷叶容器mcHys

的Y坐标递增,看上去青蛙就向上移动了。
把: playerMove()中的
this._y -= this.numMoveSd;
修改为:
//移动背景
_root.mcHys._y += this.numMoveSd;

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

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

更适合,这个游戏。


[b]六.更像是跳到荷叶[/b]

效果及源代码下载:
[url=http://www.mygamemylove.com/101.html]http://www.mygamemylove.com/101.html[/url]


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

上也会变到荷叶的正中,所以我们要修正它:


我们还是要修改: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坐标,因为青蛙跳的距离是一定的。青蛙跳上荷叶

不一定是会是最佳位置,所以要修正,不然后多跳几次,发现

青蛙根本跳不到下个荷叶,不信的读者可以试一下。

[b]七.加上开始,结束 [/b]

效果及源代码下载:
[url=http://www.mygamemylove.com/100.html]http://www.mygamemylove.com/100.html[/url]


[b]八.增加游戏的可玩性(吃小虫)。[/b]
效果及源代码下载:
[url=http://www.mygamemylove.com/99.html]http://www.mygamemylove.com/99.html [/url]

程序思路:
1>要在荷叶上出现小虫最简单的方法就是在mc荷叶符号,里加入一个图层,入一个mc的小虫,并命名一个名字
2>在产生荷叶的代码中加一个随机数。来判断是否显示,如果显示就设置所产生的荷叶中的"小虫"电影符号的alpha值为

100,否则为0.
3>在判断青蛙是否跳上荷叶的代码处加入一段代码:来判断当前的荷叶的小虫"电影符号的alpha值,如果是100就证明有

小虫,分数加1。(分数我们可以一个_root.变量来存储.)


[b]九.添加平面,效果[/b].
效果
[url=http://www.mygamemylove.com/demo/qingwua/98.swf]http://www.mygamemylove.com/demo/qingwua/98.swf[/url]

wuyutj 发表于 2007-12-3 13:53

不会玩

近山 发表于 2007-12-3 20:21

这个有人能玩一分钟吗?

smallerbird 发表于 2007-12-11 21:42

只是做为实例来着。

只是做为实例来着。可玩性不是太高。

summersyu 发表于 2007-12-20 20:50

支持下

sunzhe05119 发表于 2007-12-23 13:37

谢谢:handshake

niciori 发表于 2007-12-24 11:00

本专业团队承接各类游戏、Flash、广告、楼盘等一系列画面设计。制作精美,具有创新理念。欢迎索要作品
联系方式:13882162641黄先生
QQ:11912452

ty123king 发表于 2008-1-25 21:47

帮帮忙?

我跟着做" 青蛙跳动起来! "这例,为什么青蛙是滑行的,样子也不会变,一直滑到底?

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.