首页 >> 动画知识 >> flash游戏

Animation knowledge

flash游戏

控制物体运动三法 Flash游戏设计

大字小字2014年9月28日

  Flash的运用范围广阔,使用Flash开发的游戏也越来越多。Flash制作游戏的方法,有很多设计技巧。大家知道,不管在什么游戏中,实现物体的运动是游戏的前提,而不同的游戏里物体移动的方式也不同。所以,在这里介绍几种制作Flash游戏中实现物体运动的方法如下:

  方法一:通过单击按钮实现物体的单位运动

  单击按钮实现物体的单位运动一般在需要按键的游戏中使用。也可以给某个实体加上这段代码,通过单击实体达到某种游戏效果。

  1、打开Flash,按快捷键"Ctrl + M"打开[ Movie Properties ]面板。根据你的要求设置场景大小和背景颜色。

  2、按快捷键"Ctrl + F8"新建一个名为Graphic的Graphic符号(Movie Clip符号也行)。

  3、按快捷键"Ctrl + R"导入一张动物图片,最好是导入的图片中动物的脸是面向右的,这样为了移动效果更真实。也可以在move影片的场景里随便画个方块或圆圈。不过这样做的效果不是太明显。

  4、按快捷键"Ctrl + F8"新建一个名为move的Movie Clip符号,把Graphic符号拖拽到move影片的第1帧中。双击第1帧,输入函数Stop()。右键单击第1帧,选择Copy Frames命令。然后右键单击第2帧,选择Paste Frames命令。

  5、选择move影片第2帧中的图片,执行[Modify]→[Transform]→[Flip Horizontal]命令把图片水平翻转。注意:影片在第1帧和第2帧中的位置应该是一样的(用快捷键"Ctrl + Alt + I"打开Instance面板设置图片的X轴Y轴坐标)。

  6、回到主场景,按快捷键"Ctrl + L"打开Library后按住鼠标左键把影片move拖拽到场景中。按快捷键"Ctrl + I"打开Instance面板,给move影片起名为mc。

  7、单击[Windows]菜单→[Common Libraries]→[Bottons]打开按钮符号库。选择 "(circle)VCR Button Set"中的"gel Left"和"gel Right"按钮,然后把动物图片拖拽到场景中适当的位置。

  8、右键单击"gel Left"按钮,输入如下代码:

  on (release) {

  tellTarget ("_root.mc") { //告知电影以被调用,跳转到第2帧

  gotoAndStop (2); //跳转到第二帧后,影片就换了个方向

  }

  movex = getProperty("/mc", _x); //将影片在场景中的X坐标值附给movex

  vmovex = movex-10; //以10个像素为单位变动坐标值,实现物体的移动。

  setProperty ("/mc", _x, movex); //重新定义影片的 _x 坐标属性

  }

  9、右键单击"gel Right"按钮,输入如下代码:

  //单击此按钮,跳转到第1帧。实现图片地翻转

  on (release) { //以下代码含义参考上面

  tellTarget ("/mc") {

  gotoAndStop (1);

  }

  movex = getProperty("/mc", _x);

  movex = movex+10;

  setProperty ("/mc", _x, movex);

  }

  以上两段代码是用来控制物体左右运动的。至于控制物体垂直方向运动的代码可以结合"方法二"编写,达到最终效果。

  另外,也可以通过"onClipEvent (mouseDown){ }"语句实现单击鼠标左键实现物体的单向运动。"{ }"中添加的代码参考"方法一",但是"方法一"的设计还有一些不完美。这些需要在"方法二"中解决。

  方法二:通过敲击方向键实现物体的单位运动

  在游戏中是经常被使用到的一种敲击方向键实现物体的单位运动,尤其是RPG游戏,敲击方向键是设计RPG和其它很多游戏(如俄罗斯方块)的基础。实例中用的是小键盘的方向键,也可以改成其它键,做出各种不同的效果。

  1-5步同"方法一"。

  6、右键单击move影片第1帧中的Graphic图片(是右键单击图片,不是帧),选择Actions命令。输入如下的代码:

  onClipEvent (keyDown) { //当键被按下后执行下面的语句

  if (Key.getCode() == Key.LEFT) {

  //如果击键为 ← 键就告之影片跳到第2帧执行。实现图片地翻转

  tellTarget ("/mc") { gotoAndStop (2); }

  }

  if (Key.getCode() == Key.RIGHT) { //如果击键为 → 键就执行下面的语句

  width = getProperty("/mc", _width); //把影片宽度附值给变量width

  movex = getProperty("/mc", _x);

  movex = movex+width/10; //以影片宽度的十分之一作为图片移动的单位值

  setProperty ("/mc", _x, movex);

  }

  if (Key.getCode() == Key.UP) { //以下代码含义参考上面

  height = getProperty("/mc", _height);

  movex = getProperty("/mc", _y);

  movex = movex-height/40;

  setProperty ("/mc", _y, movex);

  }

  if (Key.getCode() == Key.DOWN) {

  height = getProperty("/mc", _height);

  movex = getProperty("/mc", _y);

  movex = movex+height/40;

  setProperty ("/mc", _y, movex);

  }

  }

  7、右键单击第2帧中的move影片,选择Actions命令。输入如下代码:

  onClipEvent (keyDown) { //以下代码含义参考上面

  if (Key.getCode() == Key.LEFT) {

  width = getProperty("/mc", _width);

  movex = getProperty("/mc", _x);

  movex = movex-width/10;

  setProperty ("/mc", _x, movex);

  }

  if (Key.getCode() == Key.RIGHT) {

  //如果击键为 → 键就告之影片跳到第1帧执行。实现图片地翻转

  tellTarget ("/mc") {

  gotoAndStop (1);

  }

  }

  //还有两段控制图片上下运动的代码同上

  }

  8、回到主场景,按快捷键"Ctrl + L"打开Library后按住鼠标左键把影片move拖拽到场景中。按快捷键"Ctrl + I"打开Instance面板,给影片move起名为mc。 这样,影片就可以做上下左右的运动。可以用按小键盘上的方向键来测试效果。如果实体一直往一个方向移动的话,这样就容易跑的无影无踪。为了防止实体混乱,再给实体加上下面一段代码,让实体出不了边界:

  右键单击move影片第1帧中的Graphic图片,然后在"movex = movex+width/10;"代码下添加如下代码:

  if(movex> =300-width){ //假设影片的场景宽度为300;

  movex=300-width; //这样设置是因为场景是以左上角的点为(0,0)点的

  }

  右键单击move影片第2帧中的Graphic图片,然后在"movex = movex-width/10;"添加如下代码:

  if(movex <=0){

  movex=0;

  }

  影片中,可以把图片换成动画。如果想做人物动画,需要制作8张图片,两个一组,前后左右方位的共四组,然后在影片中再增加几帧,这样就不会像导入Gif动画后影片一直动个不停。

  方法三、通过鼠标拖拽和点击实现物体的任意运动

  拖拽方法的实现是最基础的,但在游戏中的运用却是很广泛的。如拼图,推箱子,打老鼠,棋类等游戏都要用到这种方法。

  新增一个名为"mc"的影片。然后右键单击鼠标输入下面的代码即可:

  onClipEvent (mouseDown) { //当鼠标按下时执行下面代码

  startDrag (mc); //让影片吸附在鼠标并跟随鼠标一起运动

  }

  onClipEvent (mouseUp) { //当松开鼠标时执行下面代码

  stopDrag (); //影片脱离鼠标

  }

  这段代码的功能是点击一下鼠标,影片就出现在什么地方。

  新增一个名为"mc"的影片。然后右键单击鼠标输入下面的代码即可:

  onClipEvent (mouseDown) {

  x = _root._xmouse; //把鼠标当前在场景中的X坐标值附值给变量x

  y = _root._ymouse; //把鼠标当前在场景中的Y坐标值附值给变量y

  setProperty ("/mc", _x, x);

  setProperty ("/mc", _y, y);

  }

  以上的设计步骤就到这里为止,再结合一些其它的Flash制作和编程手段,就可以开发出属于自己的Flash游戏。

分享打印返回


动画知识Animation knowledge

广州形动动画设计有限公司

电话:020-87612322

传真:020-87615976

手机:13570023373

Q Q: 853033818

邮箱:853033818@qq.com

地址:广州市越秀区达道路16号

最新动态

形动动画承接以下业务:flash制作、动漫制作、二维动画制作、2d动画设计,如有这方面的需要,请与我们联系:020-87612322!

Copyright © 2007-2014 广州形动动画设计有限公司  网站备案/许可证号:粤ICP备17050071号-1

业务咨询:020-87612322  招聘热线:020-87615976  地址:中国·广东省广州市越秀区东山街道寺右新马路108号丰伟大厦A座7楼