今天我们来分析一下在MX中自带的一个游戏“Maze”,这个游戏简单明了,但又很好玩,很好理解,为我们这些入门级的闪客进入游戏之门打一个基础。
1、游戏目的:利用键盘方向键来控制小方块在迷宫内部运动,要和电脑比赛,谁先到对方的起点谁胜利。
2、原理分析:电脑的运动:利用引导线功能,使方块在引导线上运动,这个很简单。
控制者的运动:利用键盘方向键来控制小方块在迷宫内部运动,在迷宫内部则用hittest来检测是否和迷宫碰撞,如果碰撞就不动,没有碰撞就开始响应键盘的值。最后检测是否到达对方的起点。
3、制作准备:新建一个场景,大小为489*517,rate为70帧,为什么要70?这里有个技巧,如果你想要得到好的效果,也就是不让小方块出现一跳一跳的效果,你最好把rate设得大一点。同样我们在以后的游戏中也可以注意这一点。
我们先得准备一个迷宫的图,这个迷宫图你可以在mx中画,也可以在别的软件中画,但有一点需要注意,一定要把迷宫中的道路部分要挖空。这个可是一个比较花时间的,当然,画上一个好的迷宫,让人要花费一定的时间来找出道路,也是一个充满乐趣的事。画好的图如下图:
取名为maze pattern
新建一个MC(maze),把maze pattern放入maze中。
新建一个MC(Opponent),制作一个小方块沿一定的路线的引导线上运动的动画。如下图:
这个动画你可以调节它的长度,比如你要方块走的快一点,你可以帧数少一点,要它走的慢一点的话,你可以让帧数多一点,我们这里用7000多帧。
请注意:这里的引导线可不是随便就画画的,而是这个迷宫的通道的线路,在做引导线时不要断线,使方块在引导线上顺利地运动。
在这个mc的最后一帧上写上
_root.started=false;//:方块到达对方的起点后,标志变量started为false. _root.gotoandstop(2);//:回到根场景中的第二帧上。
其余的我们就不多说了,也就是一些辅助的东西,比如你赢了,或你输了的一些显示mc,可以看看源文件中的就可以明白了。
4、游戏制作:
回到主场中,新建如下的几个层:
1、actions层:单独用来放置actionscript的层,这是个好的习惯。
2、maze hider,用来放置按钮的层
3、opponet层:放置电脑移动方块的层。
4、player层:放上我们要移动方块的层。
5、maze boundries层:放置迷宫图的层
6、background层:背景层。
7、goal层:放置用来检测是否到达对方的起点的层。
我们注意到,在做flash时,最后每个元素放置在单独的层中,这样我们就比较好控制,而且最好每一层都写好名称,这样的话我们不会太乱了。
我们现在对每一层进行详细的解释:
actions层:共有三帧,每一帧上写上stop();目的:使按钮起作用。在每帧上停顿。
maze hider层:共有三帧,每一帧上放置一个不同的mc,其中都包含了按钮。在第一帧上的mc(maze hider),它的按钮上的action为:
on (release) { //:鼠标按钮释放 _root.started=true;//:标志变量started为true _visible = false;//:此mc不可见 _root.opponent.play();//:根目录下的mc(opponet)开始播放 _root.blinkArrows.play();//:根目录下的mc(blinkArrows)开始播放 }
在第二帧和第三帧上分别出现“你蠃了”和“你输了”的文字,并出现重新游戏的按钮,这个不用多说。
opponet层上:放置MC(opponet),取它的intance name为opponet
player层:放上我们要移动的方块。并取mc方块的intane name为(square)
maze boundries层:放置迷宫图MC,并取mc的intance name为maze.
background层:背景层。不用多说。
goal层:放置用来检测是否到达对方的起点,设mc的intane name为(goal).
到了这里,应该是差不多了,就差一个我们控制的方块怎么检测和迷宫的碰撞以及判断谁先到对方的起点。这个我们在maze这个mc中解决,鼠标右击maze,选actions,我们会看到如下的actions:
onClipEvent (enterFrame) {//:响应mcclip的enterframe事件 if (_root.started && _root._currentframe == 1) { //:判断标志变量start=true及根目录为第一帧,则开始 with (_root.square) {//:对根目录下的square这个mc // 键盘控制 if (Key.isDown(Key.DOWN)) { _y += 1; } if (Key.isDown(Key.UP)) { _y -= 1; } if (Key.isDown(Key.LEFT)) { _x -= 1; } if (Key.isDown(Key.RIGHT)) { _x += 1; } //检测玩家的方块是否和迷宫的墙发生碰撞 if (walls.hitTest(getBounds(_root).xMax, _y, true)) { _x -= 1; } if (walls.hitTest(getBounds(_root).xMin, _y, true)) { x += 1; } if (walls.hitTest(_x, getBounds(_root).yMax, true)) { _y -= 1; } if (walls.hitTest(_x, getBounds(_root).yMin, true)) { _y += 1; } // 检测方块,要是方块和goal碰撞,就跳转到根目录下的第三帧。 if (_root.goal.hitTest(_x, getBounds(_root).yMax, true)) { _root.gotoandstop(3); } } } }
当然第三帧上,早就放好了我们想要的显示的内容,比如你蠃了等。
至此,我们的迷宫游戏就全部完成了,相信你也学会了一些东西。 (完)
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |