教学资源
用Flash Random函数制作随机抽取的题库(教程)
一、新建一个Flash文档,1024*768的分辨率,因为目前的投影机大多是4:3的。
先制作一个漂亮的开场——场景:begin,左右幕布的动画效果比较简单,就此省略。
1、背景图层第一帧加上语句:stop();
2、“开幕按钮”图层的最后一帧加上语句:stop();
3、新建6个按钮,代表6种不同的题型,分别命名为button1;button2……button6;这样,点击透明的“开幕按钮”后, 6个题型按钮就闪亮登场了。
4、在题型1按钮上加上语句,点击后可跳转到"题型1"场景,其他题型按钮也是如此。
on (release) {
gotoAndStop("题型1", 1);
}
二、建立题库与答案
1、建立图层如下:
“背景”图层作为最下层;
“题目与答案”图层中,第一帧是空白帧,作为抽取题库的界面,须加上语句:stop();抽取的题库中共有27道题目,加上第一帧的空白帧,共28帧。
“题目与答案”图层中的2-27帧先打上题目,再加上27个答案,这些答案应做成“影片剪辑”分别用“answer1”-“answer27”来命名,其alpha值为0。
“答案按钮”图层中,第一帧是空白帧,其余的27帧均为透明的大按钮,点击按钮后,原来alpha值为0的答案(answer1或answer2……或answer27)才能显示出来。
on (release) {
number=jj// jj的意义请看下文分解
setProperty("answer"+number, _alpha, "100");//将原来透明的答案“answer …”显示出来
}
三、在“主控按钮与语句”图层中开始用random函数制作第一个抽题系统,其余的5个题型的抽题系统就不再一一赘述了。
1、(如图)制作三个按钮,从左到右依次设置。①.左边的“抽取题目”按钮命名为“button11”;②.中间“返回”的绿色按钮命名为“button00”,加入如下语句:
on (release) {
stopAllSounds();
gotoAndStop("begin", 20);
③.右边“继续摇号”按钮命名为“button22”;
2、(如图)制作一个1-27数字依次变化的影片剪辑,命名为“jump”。
3、再制作一个摇号时的影片剪辑,第一帧是空白;第二帧插入音乐,加入语句stop();第三帧也是空白,加入语句stop();stopAllSounds();。将这个影片剪辑命名为“music”,放在画面左上角。
4、“主控按钮与语句”图层的第一帧中加入如下语句,对相关参数进行初始化。
aa = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,21,22,23,24,25,26,27);//题目共有27题,所以定义数组aa为1-27
bb = new Array();//定义一个空数组
cc = new Array();//定义一个空数组
mmm = 0;//将mmm赋值为0
nnn = 27;//将nnn赋值为27
_root.but00._visible = false;// 将返回“begin”场景的按钮设为不可见
_root.but22._visible = false;// 将“继续摇号”按钮设为不可见
music.play();//开始播放抽题时的音乐
5、“抽取题号”按钮(button11)中加入如下语句,点击或按空格键后开始随机抽取的题库中的题目,这是整个随机抽取系统的关键所在。
on (release, keyPress "<Space>") {
music.play();//音乐开始播放
ii = random(nnn);//从nnn(0-27)中随机抽一个数(0是第1个数,1是第2个数,以此类推……)
trace(ii);//调试时,用于跟踪ii的变化(举例:如果ii=8)
jj = aa[ii];//从数组aa(1至27)中取出第(ii)个数,因为数组aa中没有0,所以第(ii)个数实际上是第(ii+1)个数(举例:那么jj=9)
trace(jj); //调试时,用于跟踪jj的变化
_root.jump.gotoAndStop(jj); //将jump影片剪辑跳转到随机数相对应的帧上,这样屏幕上有出现了随机抽取的数字(举例:此时,影片剪辑“jump”将显示“09”)
aa1 = aa.slice(0, ii);//把数组aa(1至27)中的第1个至第ii个数找出来,赋值给数组aa1
trace(aa1); //调试时,用于跟踪aa1的变化(举例:aa1=1,2,3……8)
aa2 = aa.slice(ii + 1, nnn);//把数组aa(1至27)中的第(ii+1)个至第27个数找出来,赋值给aa2
trace(aa2); //调试时,用于跟踪aa2的变化(举例:aa2=10,11,12……27)
aa = aa1.concat(aa2);//把a1和a2两个数组合并起来,赋值给aa(就等于是在原aa数组中去掉了已被抽取的数jj)
trace(aa); //调试时,用于跟踪aa的变化(举例:aa=1,2,3……8,10,11,12……27)
gotoAndStop(jj+1); //跳转到随机数相对应的帧上,这样屏幕上有出现了随机抽取的题目(举例:跳转到本场景的第10帧,显示第9题的画面)
mmm++;//原值是0
nnn--;//原值是27
_root.but11._visible = false;//为防止误操作,抽取后,“抽取”按钮不可见
_root.but22._visible = true; //为防止误操作,抽取后,“继续摇号”按钮可见
if (mmm == 27) { //如果已经抽取了27题,将执行下列语句
text = "抽题已结束,请返回!";
_root.but00._visible =true;//抽完27题,绿色返回按钮可见
_root.jump._visible = false; //抽完27题,影片剪辑“jump”不再显示数字
_root.but22._visible = false;_root.but11._visible = false; //抽完27题,“继续摇号”可见
} // end if
}
6、“继续摇号”按钮(button22)中加入如下语句。
on (release) {
_root.but11._visible = true;//使“抽取题目”按钮可见
_root.but22._visible =false;//隐藏“继续摇号”按钮
_root.jump.play();//重新让影片剪辑“jump”滚动数字
music.play();//让音乐重新播放
}
四、为便于操作,“场景1”的屏幕下方加上提示:
1、静态文本“本组共27题,已抽取_____题”。
2、动态文本,属性中的“变量”框中填入“mmm”
3、动态文本,属性中的“变量”框中填入“text”
五、为防止重复答题,在“begin”场景中做如下设置:
回到“begin”场景,在“开幕按钮”图层的最后一帧加上语句:
if (mmm== 27) { //如果已经抽取了27题