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

Flash动画制作
Flash 3d效果精彩实例(5)
贺新年 制作五彩缤纷焰火动画
FlashMX2004中的XML应用之原理篇
制作一个骄艳的鲜花情人Flash贺卡
有趣 用Flash制作互动的小人
Flash制作鸡年新春动画贺卡
Flash MX 2004 UI组件系列教程(3)
Flash加载外部文件(5)
Flash MX 2004 UI组件系列教程(4)
Flash加载外部文件(2)
Flash加载外部文件(3)
一个最简便的代码实现任意数字和0的来回跳转
让Flash课件中测试题信手拈来
MX中如何实现swf文件的完美跳转
三分钟理解Flash中的级别关系
flash与ASP通信的几种方法
flashMX2004视频插件的应用教程
如何做好一个多人配合的flash项目
AS计算方面的错误
如何防止SWF文件被反编译

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 85 ::
收藏到网摘: 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所示: