第十课
Random随机函数的应用
在FLASH的各种函数中,Random()随机函数也是一个非常有用的函数,我们可以用它来做出各种特殊的效果。例如做一个随机移动的图标,做出逼真的火焰、烟火等效果。而这一课,我们要学习用Random()函数来做一个FLASH的猜数字小游戏。开始这节课之前,我们先放松一下,玩一下右面这个游戏吧,祝你好运! |
|
|
好了,我们要开始做这个小游戏了。首先,还是按下Ctrl+M,把工作区定义成300*100。在Layer1层的第一帧中,如左图画上几个符号(Symbol,一个方框里的内容就转换成一个Symbol),注意,要把“简单”、“普通”和“高难”这几个图形转化成按钮符号(Button
Symbol),这样,可以让游戏者通过按钮选择游戏的难度。 |
接着是在Layer1层的第二帧插入一个空的关键帧,在这一帧里如右图画上提示和按钮。在这一帧中,下方的0……9这是个数字都要转换成按钮符号(Button
Symbol),以便游戏者选择数字。而中间的那个方框,则是用文字工具(Text Tool)创建的文本域(Text Field),把这个文本域的属性变量的变量名定为num(选中文本域后在菜单种选择Modify
-> Text Field -> Variable,具体方法参见前面的课程),如下图所示设置这个文本域的属性。 |
|
文本域的属性的设置
现在轮到第三和第四帧了,在这两帧里,分别如左图画上答对和答错的结束画面。这两帧中右下方的“再来一次”也要做成按钮符号(Button
Smbol)。这两帧的左边都有一个文本域,这两个文本域都是和第二帧的相同的。你可以在第二帧中选中文本域,然后在菜单中选择Edit
-> Copy,然后到第三、第四帧中在菜单里选择Edit -> Paste粘贴,然后移动到合适位置即可。
接下来就是编写程序了,我们一帧一帧地来写。
在第一帧中,首先把这一帧的Action设为Stop,这样就能让游戏者做出选择,选好难度后才进入游戏。接着,分别在“简单”、“普通”和“高难”三个按钮上单击鼠标右键,在弹出的菜单中选择Properties...
-> Action为这三个按钮添入以下程序(下面的程序是以“简单”按钮为例的):
On (Release)
Set Variable: "chance" =
4
Go to Next Frame
End On
如右图所示。
这段程序主要是确定是以那种模式进行游戏,所以Set Variable所设的变量chance就是机会的次数,Go
to Next Frame是进入下一帧(开始游戏)。所以,“普通”和“高难”两个按钮的程序也是类似的,只是机会的次数要相应地设少一些,“普通”模式中,chance的值赋成2,“高难”则赋成0。
第二帧,则是这个游戏里最关键的一帧,主要负责了游戏的数据的生成和判断,所以,可得仔细一点呀!
首先,把这一帧的Action作如下设置,进行数据的初始化:
Set Variable: "num" = "?"
Set Variable: "wrong" = 0
Stop
其中,num就是文本域的属性变量,我们先赋一个“?”给它,表示不确定的值。变量wrong则是纪录选错数字的次数,以便和chance比较,决定是否要结束游戏。
接着,我们要给这一帧中的十个数字按钮加上程序。这些程序的功能都是一样的——判断随机生成的num得知是否与按下的数值相同,然后根据结果的不同做出条转的选择。要是我们给每一个按钮都写上同样的程序,那么我们的工作量就会成倍地增加。我们能不能象C语言那样,编写一段子程序(Sub
Program)在用到这段程序的时候调用它呢?当然可以的,下面我们就来看看我们应该怎么做。
在第五帧添加一个空的关键帧。在这一帧的Action中写入这一段子程序:(如左图所示)
Set Variable: "num" = Random (10)
If (num=i)
Go to and Stop ("right")
Else
If (wrong=chance)
Go to and Stop
("wrong")
End If
Set Variable: "wrong" = wrong+1
End If
第一句中,Set Variable: "num"=Random
(10)意思是随机产生0-9之间的一个数字(Random (n)就是产生0 - (n-1)之间的一个数字)。判断中涉及到的变量i则是纪录按下了那个按钮。而跳转到"right"和"wrong"则分别是第三第四帧的卷标(Label),是结果而定跳转到正确或错误的结束画面。当然如果选的数字是错误的,wrong变量还要自加一。
当然,我们不能忘了在第二帧中调用第五帧中的程序,所以我们还要给第五帧取一个卷标(Label)就像C域严重的函数名(Function
Name)一样。我们把第五帧的Label定为program(在Timeline区第五帧的方格点右键,在弹出的菜单中选择Properties...
-> Label,在Label项中填入program)。然后,回到第二帧,分别选择十个按钮,给它们加上这么一段Action代码(以数字0的按钮为例):
On (Release)
Set Variable: "i" = 0
Call ("program")
End On
如果是其他数字按钮的话,只要把变量i的数值修改以下即可。如按钮1,则i赋1,按钮2,赋2,以此类推。
|
第五帧的Action
|
|
Scene的Timeline区
|
|
第二帧中按钮0的Action
|
最后是第三和第四两帧。这两帧比较简单,首先把这两帧的卷标(Label)分别定义成right和wrong,接着我们只要分别给这两帧中的“再来一次”按钮加上这么一段程序,让它跳回第一帧就可以了:
On (Release)
Go to and Stop (1)
End On
如右图。 |
|
啊,漫长的一课,终于完工了。来,按下Ctrl+Enter,玩一下你自己做的FLASH小游戏吧。虽然很简单,但这毕竟是你自己做的呀。那么,我们一起进入下一课——简单的FS
Command控制吧!
|
摘自《你的网》 孤独过客/文
|
|