当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash游戏制作:贪食蛇(3)

Flash动画制作
Flash实例教程:用AS3代码表现倾斜角与斜率
Flash实例教程:用AS3代码制作交互式3D旋转动画效果
Flash cs3仿真艺术设计5.6:图形元件的同步与不同步
Flash cs3仿真艺术设计5.7:图形元件的同步应用
Flash cs3仿真艺术设计5.8:铰连身体部分
Flash实例教程:用AS2代码制作图片循环效果
Flash实例教程:AS3代码简单表现照片底片效果
Flash cs3仿真艺术设计5.9:关闭缺口_完善角色肢体连接
Flash入门实例教程:图片不间断滚动动画效果
Flash AS2实例教程:鼠标感应放大缩小图片效果
Flash AS3实例教程:鼠标跟随炫舞线条动画效果
Flash AS2实例教程:制作360度全景动画效果
Flash cs3仿真艺术设计5.10:位图动画的表现
Flash cs3仿真艺术设计5.11:导入PSD文件
Flash AS3基础教程:物理基础之速度向量(Velocity)
Flash AS3.0菜鸟学飞教程:帧循环学习实例
Flash MX 视频导入功能详解(6)
Flash教程:视频导入与编辑
Flash cs3仿真艺术设计5.12:运动引导层制作布什搞笑动画
Flash cs3仿真艺术设计5.13:人物行走动画制作技巧

Flash动画制作 中的 Flash游戏制作:贪食蛇(3)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 68 ::
收藏到网摘: n/a

Action代码控制

  这一步是整个游戏制作中最最关键的阶段,游戏的主要控制部分都在这里实现。

  1.选取insert--.>new symbol菜单命令,还是新建一个movie clip类型的组件,并给其命名为control.

  2.在组件 control的编辑状态下,新建一个图层layer2,此图层用来添加游戏的主action.

  3.给图层layer2的第二到第七帧全部插入关键帧,并且在properties属性面板中给第7关键帧添加帧标签frame label:”lose,”,如图9所示:

 
图9

  4. 首先在layer2的第1关键帧中添加as:

   // 设定贪吃蛇初始x坐标值
  x = 198;
   // 设定贪吃蛇初始y坐标值
  y = 306;
   // 设定边界的最右坐标值
  maxx = 540;
   // 设定边界的最左坐标值
  minx = 18;
   // 设定边界的最底坐标值
  maxy = 378;
   // 设定边界的最顶坐标值
  miny = 18;
  // 设定贪吃蛇初始向横方向的步数
  xm = 18;
   // 设定贪吃蛇初始向竖方向的步数
  ym = 0;
   // 设定蛇身的个数
  n = 10;
   // 初始化i,j和场景上score函数的值,score值表示分数。
  i = 0;
  j = 0;
  /:score = 0;   //注意:这里 /:score 是指明主场景中计分变量score的路径

  5.在layer2的第2关键帧添加as:

   // 设定第一个蛇身的位置
  setProperty("/snake", _x, x);
  setProperty("/snake", _y, y);

  6. 在layer2的第3关键帧添加as:

   // 利用RANDOM函数设定食物的随机位置
  foodx = int(Number(random(30))+1)*18;
  foody = int(Number(random(20))+1)*18;
  setProperty("/food", _x, foodx);
  setProperty("/food", _y, foody);

  7. 在layer2的第4关键帧添加as:

  i = Number(i)+1;
  j = Number(j)+1;
  if (Number(i)>Number(n)) {
   i = 1;
   j = 1;
  }
   // 定义一个数组"oldx"&j和"oldy"&j来记录各个蛇身的位置。
  set("oldx" add j, getProperty("/snake", _x));
  set("oldy" add j, getProperty("/snake", _y));
   // 复制蛇身,蛇身的数目等于n
  duplicateMovieClip("/snake", "snake" add i, i);
  k = j;
   // 当第一个蛇身的位置与食物的位置相等时,分数加上9,蛇身个数加1,并转到第三帧。
  if (Number(x) == Number(foodx) and Number(y) == Number(foody)) {
   /:score = Number(/:score)+9;   //注意:这里 /:score 是指明主场景中计分变量score的路径
   n = Number(n)+1;
   gotoAndPlay(3);
  }

  8. 在layer2的第5关键帧添加as:

   // 使第一个蛇身的位置横向移动xm个坐标或竖向移动ym个坐标。xm和ym数值决定于按下的方向键。
  x = Number(getProperty("/snake", _x))+Number(xm);
  y = getProperty("/snake", _y)-ym;
  setProperty("/snake", _x, x);
  setProperty("/snake", _y, y);

  9. 在layer2的第6关键帧添加as:

   // 如果第一个蛇身的位置超出了边界,转到"lose"这帧。否则就转回到第四帧
  if (Number(x)>Number(maxx) or  Number(x)<Number(minx)  or  Number(y)>Number(maxy)  or  Number(y)<Number(miny)){
   gotoAndStop("lose");
  } else {
   gotoAndPlay(4);
  }

  10.然后回到图层layer1,在此层我们来添加用来判断贪食蛇是否首尾相接的action.

  11.在图层laye1的第5帧插入一个关键帧,添加如下action;
   // 调用label名为judge的帧,来判断蛇身是否首尾相接。
  call("judge");

  12.在图层laye1的第8帧插入一个关键帧,并设置此帧的帧标签为"judge",如图10所示: