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

Flash动画制作
Flash5任意两点间随机画线(二)
Flash5的DATE对象(一)
Flash5任意两点间随机画线(四)
Flash 神奇遮罩之图片篇(2)
Flash 神奇遮罩之应用篇(3)
Flash MX的自由变形工具(4)
利用Flash MX模板制作XML动态菜单(3)
Freehand和Flash的结合应用(9)
Flash5 位移操作(一)
Flash5任意两点间随机画线(五)
Flash 神奇遮罩之应用篇(2)
Flash 神奇遮罩教程之以假乱真篇
Flash 神奇遮罩之透明度篇(3)
实例学用Flash MX增强的AS功能(3)
利用Flash MX模板制作XML动态菜单(5)
Flash5任意两点间随机画线(一)
Flash层的运用(二)
Flash 神奇遮罩之应用篇(4)
Flash 神奇遮罩之综合篇(2)
Flash 神奇遮罩之综合篇(1)

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


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