Flash游戏制作--考眼力

Flash游戏制作--考眼力

2004/11/7 2:24:00来源:本站整理作者:蓝点我要评论(0)

            
             
              
             
            

               
               

            



            

大家可能都玩过这样一种游戏,和朋友座在一起,面前摆三张扑克牌,一张是翻开的,你可以看到牌的内容,其它两张则是被翻过的,看不到具体是什么牌,然后由别人随意的快速交换三张牌,最后看谁能找到开始时翻开的牌,这就需要在交换牌的过程中仔细观察,也算是对你的眼力的考验吧。(本例的.swf和.fla文件请点击这里下载)

  这次我们使用Flash来模拟一下这个游戏,换牌的过程由电脑完成,你只需要用眼睛盯住目标牌即可,游戏的主界面如图1所示:


图1

  玩家只需要在开始界面中用鼠标点击一下,电脑就会开始快速的换牌了,游戏的制作原理其实比较简单,游戏的过程无非是纸牌的两两交换,我们只需要先将纸牌的交换过程做好,比如第一张和第二张交换,第二张和第三张交换,第一张和第三张交换,然后使用Random随机函数随机的调用这三个交换过程,就可以实现随机交换牌的功能。

  下面我们来具体制作这个游戏。

  1.首先需要制作图一中中间位置的目标牌,新建一个Graphic图形元件,命名为club,进入元件的编辑区后,使用钢笔工具绘制图2所示的梅花图形,然后填充上黑色:


图2

  再新建一个Graphic图形元件命名为picture,进入元件的编辑区后,先选中矩形工具,然后打开工具箱下面的附加工具”圆角矩形半径设置”对话框,设置圆角矩形的半径为3,如图3所示:


图3

  设置好后,在编辑区中绘制一个大小适中的圆角矩形,如图4所示:


图4

  按照同样的方法绘制一个稍微小一点的圆角矩形,放到前一个矩形内,并将元件club放到两个矩形的正中间,如图5所示:


图5


2.制作好目标牌后,就需要制作纸牌的背面了,新建一个Graphic图形元件,命名为card,进入元件的编辑区后,还是按照上面一样的方法绘制两个套在一起的圆角矩形,里面那个矩形的填充色设置按照图6所示设置即可:


图6

  最后效果如图7所示:


图7

  再新建一个Movie clip影片剪辑元件,命名为cards,进入元件编辑区后,添加三个图层,每一层都放置一个card对象,并将其从左到右排列好,如图8所示:


图8

  3.所需要的纸牌制作好后,就需要制作纸牌的交换过程了,因为游戏中一共有三张纸牌,所以我们只需要制作三个不同的交换效果,分别为1和2,1和3,2和3交换,这三个交换过程的制作方法完全相同,这里只讲解1和2交换的制作方法,其它两个交换过程类似。

  新建一个Movie clip影片剪辑元件,命名为swap12,进入元件的编辑区后,建立四个图层,在layer3,layer2,layer1中从左到右放置三个card对象,将其排列好,然后在四个图层的第10祯分别插入关键帧,在第10桢处,将纸牌1和2交换一个位置,分别在layer2和layer3中创建Motion运动过渡动画,这样就实现了1和2的交换效果,最后在layer4的最后一祯添加如下Action动作脚本:

tellTarget ("_level0") {

gotoAndPlay(12);

}
最后的时间线如图9所示:


图9

  按照同样的方法制作其它两个交换过程,swap13和swap23.

  4.游戏中需要使用鼠标点击纸牌来开始游戏和在最后确定目标牌,所以还需要制作一个隐形按钮,新建一个Button按钮元件,命名为invisible,在最后的hit桢绘制一个长矩形即可。

  5.回到主场景,设置舞台大小为320px*160px,背景色为白色。在主场景中添加三个图层,从下到上分别命名为cards,button和actions.

  6.将元件invisible隐形按钮放到图层button中,然后将时间线延伸到第6祯,在第46桢插入一个关键祯,同样将隐形按钮拖到舞台中,最后将时间线延伸到第62祯,如图10所示:


图10

  7.回到图层cards,在第7桢插入一个关键祯,将元件card分两次拖到舞台中,并调整位置到舞台的两侧,然后将元件picture放置到舞台正中间,作为游戏的开始画面,如图11所示;


图11

  最后将时间线延伸到第11祯。

  8.在第12祯插入一个空白关键帧,将元件cars放到舞台上,在第18帧插入一个空白关键帧,将元件swap12拖到舞台中,在第23帧插入一个空白关键帧,将元件swap13放到舞台中,同样的在第32帧插入一个空白关键帧,将元件swap23拖到舞台中。

  9.第8步其实设置的是游戏中交换纸牌的过程,将三个交换过程插入到影片中,然后由程序随机的调用。最后需要玩家来判断目标牌的位置,所以在第40帧插入一个空白关键帧,将元件card分三次拖进舞台,从左到右排列好,因为这时候玩家需要通过鼠标点击来作出自己的判断,所以需要将这三个MC转换成Button,方法很简单,只需要在属性面板的元件类型下拉列表中选择Button即可,如图12所示:


图12

  10.最后需要制作目标牌的三个不同位置,以便和玩家所做判断进行比较,在第46帧插入一个空白关键帧,将元件pictrue放到舞台的最左边,然后分两次将元件card放进舞台,排列其位置到舞台靠右的地方,如图13所示:


图13


11.按照相同的方法,分别在第52和第58帧设置目标牌的其它两个位置,分别如图14和图15所示:


图14


图15

  12.最后的任务就是给游戏设置Action动作脚本来控制游戏了。在图层actions的第7帧添加如下AS:

/:pos1 = "0";

/:pos2 = "1";

/:pos3 = "0";

/:count = Number(int(random(5)))+6;

//初始化3个变量,count取一个随机数,范围在4到10之间的整数

stop();

//将游戏停止在这里,直到用户响应

图层actions的第12帧添加如下AS:

stop();

//将游戏停止在此帧

if (Number(/:count)<>0) {

/:count = /:count-1;

//如果随机数count的值不等于0,count的值减1

ran = random(3);

//设置随机变量ran,取值范围在0到2之间

if (Number(ran) == 0) {

gotoAndStop("swap12");

//如果随机数ran的值等于0,则执行swap12这帧,交换1和2

} else if (Number(ran) == 1) {

gotoAndStop("swap13");

//如果随机数ran的值等于1,则执行swap13这帧,交换1和3

} else {

gotoAndStop("swap23");

//如果随机数ran的值等于2,则执行swap23这帧,交换3和2

}

} else {

gotoAndStop("guess");

//如果随机数count的值等于0,执行guess帧,交换结束,等待玩家进行判断

}

图层actions的第18帧添加如下AS:

temp = /:pos2;

/:pos2 = /:pos1;

/:pos1 = temp;

图层actions的第25帧添加如下AS:

temp = /:pos3;

/:pos3 = /:pos1;

/:pos1 = temp;

图层actions的第32帧添加如下AS:

temp = /:pos2;

/:pos2 = /:pos3;

/:pos3 = temp;

//上面三帧都是分别设置三个变量
13.回到图层card的第7帧,给最左边的纸牌添加如下AS:

on (release) {

if (Number(pos1) == 1) {

gotoAndStop("pos1");

} else if (Number(pos2) == 1) {

gotoAndStop("pos2");

} else {

gotoAndStop("pos3");

}

}

//根据变量pos1.pos2,pos3的不同值,跳到相应的帧

给中间的纸牌添加AS:

on (release) {

gotoAndPlay("shuffle");

}

//如果点此纸牌,则开始游戏

  最后的时间线如图16所示:


图16

  在上面action编写过程中,为了简化编写过程,我们给图层actions的一些帧设置了帧标签,可以达到明确当前帧作用的目的,所以在动画制作中推荐大家多使用帧标签,可以在一定程度上提高工作效率,具体的帧标签设置大家可以参考附带的源文件。

  最后发布游戏,就可以开始玩了,看看你的眼力是不是很好哦:)

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 囧
      囧
  • 0 恶心
      恶心
  • 0 期待
      期待
  • 0
      难过
  • 0 不错
      不错
  • 0 关注
      关注
  • 最新评论
  • 热门评论
共有评论(0)条 查看全部评论
高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲

注:您的评论需要经过审核才会显示出来