现在用Flash开发的游戏越来越多了。很多朋友也很想学习用Flash制作游戏的方法。大家知道,不管在什么游戏中,实现物体的运动是游戏的前提,而不同的游戏里物体移动的方式又不尽相同。所以,想学习制作Flash游戏的朋友今天就先随我一起学学在Flash中实现物体运动的几种方法吧。
方法一:通过点击按钮实现物体的单位运动。
这种方法一般在需要按键的游戏中使用。你也可以给任何元件加上这段代码,通过点击元件达到某种游戏效果。下面我们看看如何实现“方法一”。
1.打开Flash MX 2004,在“属性”面板设置场景大小为300px x 185px,背景颜色为白色,帧频为12fps。(具体情况具体设置)
2.按快捷键Ctrl+F8打开“创建新元件”面板,新建一个名为Graphic的“图形”元件(或者“影片剪辑”)。如图1所示。
图1
3.按快捷键Ctrl+R打开“导入”面板导入一张图片。当然我们也可以在Graphic元件的场景里随便画个方块或圆圈。不过这样做效果就不太明显了。
4.按快捷键Ctrl+F8新建一个名为move的“影片剪辑”元件,把Graphic元件拖拽到move影片的第1帧中。点选第1帧,按F9键打开“动作”面板,输入代码“stop();”。继续点选第1帧,按F6键复制第1帧,这样新建的第2帧内容和第1帧完全。
5.点选move元件第2帧中的图片,执行[修改] 菜单→[变形]→[水平翻转]命令将图片水平翻转。
6.回到主场景,按快捷键Ctrl + L打开“库”面板后按住鼠标左键把“库”中的move元件拖拽到场景中。在“属性”面板为move影片元件起实体名为mc。如图2所示。
图2
7.单击[窗口]菜单→[其它面板]→[公用库]→[按钮]命令打开“按钮”元件库。选择 “(circle)VCR Button Set”中的“gel Left”和“gel Right”按钮,如图3所示,然后把它们拖拽到场景中适当的位置。
图3
图4
8.点选场景中的“gel Left”按钮,按F9键打开“动作”面板,输入如下代码:
// 点击按钮,元件向左运动
on (release) {
// 跳转到mc元件的第2帧停止,让图片转换方向
mc.gotoAndStop(2);
// 以10个像素为单位横向移动元件
movex = mc._x;
movex -= 20;
// 为元件mc的x坐标从新赋值
mc._x = movex;
// 让元件始终在场景里运动
// 元件的原点为左上角的点,即(0,0)点,见图4所示
if(mc._x=300){
mc._x = -mc._width;
}
}
以上两段代码是用来控制物体左右运动的。至于控制物体垂直方向运动的代码可以结合“方法二”自行编写。另外,可以通过“onClipEvent (mouseDown){ }”语句实现单击鼠标左键实现物体的单向运动。“{ }”中添加的代码同“方法一”中的代码,很简单的,篇幅关系柳叶这里就不多说了。但是“方法一”的设计还有一些不完美。这些我们将在“方法二”中解决。
效果演示:
方法二:通过敲击方向键实现物体的定量运动。
这种方法在游戏中是经常被使用到的,尤其是RPG游戏,学会它是设计RPG和其它很多游戏(如俄罗斯方块)的基础。实例中用的是小键盘的方向键,也可以把它改成其它键,做出各种你想要的效果。
1-5步同“方法一”。
6.点选move元件场景第1帧中的Graphic元件,按F9,在弹出的“动作”面板中输入如下的代码:
// 当键被按下后执行下面的语句
onClipEvent (keyDown) {
// 敲击小键盘的‘←’键,跳到元件第2帧,实现图片翻转
if (Key.getCode() == Key.LEFT) {
_root.mc.gotoAndStop(2);
}
// 如果敲击小键盘的‘→’键就执行代码
if (Key.getCode() == Key.RIGHT) {
// 将元件宽度赋值给变量width
// 因为元件不在根目录下,所以要加“_root”
width = _root.mc._width;
movex = _root.mc._x;
// 以元件宽度的十分之一为单位移动元件
movex += width/10;
// 不让元件运动出场景,场景宽度为300
if(movex>=300-width){
movex = 300-width;
}
_root.mc._x = movex;
}
// 以下代码实现元件上下移动
if (Key.getCode() == Key.UP) {
height = _root.mc._height;
movey = _root.mc._y;
movey -= height/10;
if(movey=185-height){
movey = 185-height;
}else{
_root.mc._y = movey;
}
}
}
7.点选第2帧场景中的move元件,按F9打开“动作”面板,输入如下代码:
onClipEvent (keyDown) {
if (Key.getCode() == Key.LEFT) {
width = _root.mc._width;
movex = _root.mc._x;
movex -= width/10;
if (movex<=0) {
movex = 0;
}
_root.mc._x = movex;
}
if (Key.getCode() == Key.RIGHT) {
_root.mc.gotoAndStop (1);
}
// 以下是元件上下运动代码,同上
if (Key.getCode() == Key.UP) {
height = _root.mc._height;
movey = _root.mc._y;
movey -= height/10;
if(movey=185-height){
movey = 185-height;
}else{
_root.mc._y = movey;
}
}
}
8.回到“场景1”,按快捷键Ctrl+L打开”库”面板后按住鼠标左键把影片move拖拽到场景中。在“属性”面板为move影片元件起实体名为mc。如图2所示。这样,影片就可以做上下左右的运动了。可以把运动的动画放入元件使用。可以制作8张图片,两个一组,前后左右方位的共4组,然后在影片中再增加几帧就OK了(再就作为课后作业留个大家了)。这样就可以解决导入的Gif动画动个不停的问题了。
效果演示:
方法三:通过鼠标拖拽实现物体的任意运动。
拖拽方法的实现是很简单的,但它在游戏中的运用却是很广泛的。如拼图,推箱子,打老鼠,棋类等游戏都要用到这种方法。
新增一个实例名为“mc”元件,点选该元件,按F9键,输入代码:
// 当鼠标按下时执行代码
onClipEvent (mouseDown) {
// 让影片吸附在鼠标并跟随鼠标一起运动
startDrag (mc);
// 当松开鼠标时执行下面代码
onClipEvent (mouseUp) {
// 影片脱离鼠标
stopDrag ();
}
这段代码的功能是点击一下鼠标,影片就出现在鼠标点击的地方。
效果演示:
方法四:通过鼠标点击实现物体的任意运动。
新增一个实例名为“mc”的元件,点选该元件,按F9键,输入代码:
onClipEvent (mouseDown) {
// 把鼠标当前在场景中的X(Y)坐标值赋值给变量x(y)
x = _root._xmouse;
y = _root._ymouse;
// 把变量x(y)的值赋给元件的x(y)坐标
_root.mc._x = x;
_root.mc._y = y;
}
效果演示:
好了,说得差不多了。只要大家掌握了以上几种实体的运动方法,再结合一些其它Flash制作方法和编程技巧,就一定能设计出很好的作品来的。 该效果源件下载(35.9K)

