一、实例说明
这是一个古老的游戏,几乎每个人小时候都玩过,现在用Flash编制一个游戏程序,通过这个程序,能了解一些Action的高级应用。
二、有关知识
绘制实例,Action编程,按钮的制作及设置,变量。
三、制作过程
步骤1:打开Flash,建立一个新文件。
步骤2:从菜单栏中选择插入>添加符号(Insert>New Symbol),在出现的对话框中选图像(Graphic),命名为“gr背景”,用绘图工具在工作区画一个背景图形,如图1所示。
提示:gr表示图像Graphic的意思,这样可以避免重名的麻烦,使用者虽然可以随意命名,但养成一个习惯有利于提高效率。
步骤3:重复步骤2,分别制作的三个图像,命名为“gr石头”、“gr剪子”、“gr布”。
如图2所示。
图1
背景
图2
表示石头、剪子、布的三个图像
步骤4:从菜单栏中选择插入>添加符号(Insert>New Symbol),在出现的对话框中选按钮(Button),命名为“bu石头”,出现按钮编辑窗口后,从菜单栏中选择窗口>库(Window>libuary),在库中将“gr石头”拖到舞台,这时Up帧下出现一个黑点,表示Up帧为关键帧,然后再添加其他图形,比如给图像加一个小框,下面写上文字,以使这个按钮看起来更漂亮些;鼠标单击Over帧后按F6键,插入关键帧,Over表示鼠标停留在按钮上时所显示的图像,将图形的白色外框换成灰色;设置Down为关键帧,Down表示鼠标按下按钮时所显示的图像,将白色的字填上红色;设置Hit为关键帧,Hit表示按钮的响应范围,如3所示。
图3
按钮“bu石头”的制作
步骤5:按步骤4的方法将“gr剪子”、“gr布”分别制成按钮“bu剪子”、“bu布”。
步骤6:从菜单栏中选择 插入>添加符号(Insert>New Symbol),在出现的对话框中选电影片段(Movie Clip),命名为“MC石剪布”,该Movie
Clip共设4帧,先设第1帧为关键帧,注意,第1帧中不放置任何对象,在以后的3个帧中分别放置“gr石头”、“gr剪子”、“gr布”,右击第1帧,在Action面板选中Actions/Movie
Control/stop。
步骤7:再做两个按钮“bu重新开始”和“bu结束”,它们的功能是用来在游戏结束后,用来选择重新开始游戏和退出游戏。其中“bu重新开始”的具体做法是,在Up,Over,Down帧里写上“再战三百回合”的字样,在Hit帧里指定响应范围。如图4所示。
图4
按钮“重新开始”的制作
“bu结束”可以用同样的方法制作。
步骤8:回到主场景,将Layer1改名为“背景”,设置第1帧为空帧,第2帧为关键帧,并将图片“gr背景”放置在“背景”层的第2帧里。
注:以后放入的各元素均为所在层的第2帧。
步骤9:新建名为“按钮”的层,将按钮“bu石头”、 “bu剪子”、 “bu布”放置在这个层里。
步骤10:新建命名为“动画” 的层,将“mc石剪布”重复两次放置在这个层里,如图5所示。
图5
按钮在背景中的位置
因为“mc石剪布”的第1帧是空的,所以放置时只能看到一个小圆点,图中的两个小白点就是被放置两次“mc石剪布”。
步骤11:选中左边的“mc石剪布”,在属性面板将其命名为player,在Color下拉框里选色调(Tint),将颜色值设为#FFFF00;同样的方法设置右边“mc石剪布”的实例名为computer
,在Color下拉框里选色调(Tint),将颜色值设为#FF0000。 如图6所示。
图6给场景中的电影命名
步骤12:选择名为computer的“mc石剪布”,执行修改>变形>水平翻转(Modify>Transform>Flip
Horizontal)。
步骤13:新建图层,命名为“变量”,单击文字工具 ,在图7所示的地方加入文字框,并在文字框内输入两个数字:00,设置好字体、字号、颜色。
图7
加入文字框
步骤14:在文字可输入的情况下,鼠标右击文字框,在弹出的菜单中选择面板>文字选项(Panels>Text
options),具体设置如图8所示。
图8
文字框的设置
步骤15:分别在“玩家胜”、“电脑胜”后加入文字框,设置同上,注意把“玩家胜”后文字框的属性(Var)设置为pla,“电脑胜”后文字框的属性(Var)设置为com。在设置文字框时注意文字框宽度要能容纳两个数字。如图9所示。
图9“电脑胜”字段属性的设置
步骤16:鼠标右击“bu石头”,在Action面板输入如下语句:
语句 |
解释: |
on (press) { |
当鼠标按下时执行以下命令 |
/:totalplay = /:totalplay+1; |
/:totalplay变量加1 |
if
(/:totalplay == 30) { |
判断如果/:totalplay变量为3时执行以下命令 |
gotoAndStop (5); |
跳至第5帧并停止播放 |
}
else { |
如果/:totalplay不为30,执行以下命令 |
/:a = random(3)+2; |
变量/:a等于随机数(0,1,2)加2(注) |
if (/:a == 4) { |
判断如果/:a为4 |
/:com = /:com+1; |
变量/:com加1 |
} |
停止判断 |
if (/:a == 3) { |
如果/:a为3 |
/:pla = /:pla+1; |
变量/:pla加1 |
} |
停止判断 |
tellTarget ("computer") { |
告知名为computer的目标 |
gotoAndStop (/:a); |
跳至computer目标的第/:a帧并停止 |
} |
停止告知目标 |
tellTarget ("person") { |
告知名为person的目标 |
gotoAndStop (2); |
跳至person目标的第2帧并停止 |
} |
停止告知 |
} |
停止判断 |
} |
程序结束 |
注:Random(3)的意思为由电脑自行从0,1,2三个数中产生一个随机数。
步骤17:鼠标右击“bu剪子”,在Action面板输入如下语句:
on (press) {
/:totalplay = /:totalplay+1;
if (/:totalplay == 30) {
gotoAndStop (5);
} else {
/:a = random(3)+2;
if (/:a == 2) {
/:com
= /:com+1;
}
if (/:a == 4) {
/:pla
= /:pla+1;
}
tellTarget
("computer") {
gotoAndStop (/:a);
}
tellTarget
("person") {
gotoAndStop (3);
}
}
}
步骤18:鼠标右击“bu布”,在Action面板输入如下语句:
on (press) {
/:totalplay = /:totalplay+1;
if (/:totalplay == 30) {
gotoAndStop (5);
} else {
/:a = random(3)+2;
if (/:a == 3) {
/:com
= /:com+1;
}
if (/:a == 2) {
/:pla
= /:pla+1;
}
tellTarget
("computer") {
gotoAndStop (/:a);
}
tellTarget
("person") {
gotoAndStop (4);
}
}
}
步骤19:建立新层,命名为“结果”,设置“结果”层的第5帧为关键帧,双击第5帧,在Actions面板中输入以下语句:
语句: |
解释: |
if (/:pla > /:com) { |
如果变量/:pla大于变量/:com |
gotoAndStop (6); |
跳至第6帧并停止 |
} else if (/:pla
</:com) { |
如果变量/:pla小于变量/:com |
gotoAndStop (7); |
跳至第7帧并停止 |
} |
停止判断 |
if (/:pla == /:com) { |
如果变量/:pla等于变量/:com |
gotoAndStop (8); |
跳至第8帧并停止 |
} |
停止判断 |
步骤20:在编程时,设置为游戏结束后如果玩家获胜则跳转到第6帧,可按图10所示设置,图中两处00为文字框,具体设置同步骤15,左边文字框属性(Var)为“pla”,右边文字框属性(Var)为“com”。打开窗口>库(Window>Library),把“bu重新开始”和“bu退出”放置在页面的右下角,右击“bu重新开始”,在Actions面板中输入以下语句:
on (press) {
gotoAndPlay (1);
}
在“bu退出”的Actions面板中输入:
on (release) {
fscommand ("quit", "");
}
图10
玩家获胜帧
步骤22:设置“结果”层的第7帧为关键帧,在编程时,设置为游戏结束后如果电脑获胜则跳转到第7帧,可按图11所示设置,其他设置同上。
图11
电脑获胜帧
步骤23:设置“结果”层的第8帧为关键帧,在编程时,设置为游戏结束后如果战平则跳转到第8帧,可按图12所示设置,其他设置同上。
图12
双方战平帧
步骤24:设置“结果”层的第1帧为关键帧,双击第1帧,在Actions面板中输入以下语句:
/:pla = 0;
/:com = 0;
/:totalplay = 0;
步骤25:设置“结果”层的第2帧为关键帧,双击第2帧,在Actions面板中加入stop语句。
好了,现在可以用菜单栏中文件>导出影片