本期我们一起来学习在Flash中多项选择题的制作方法。
  需要解决的问题


  用Flash制作多项选择题需要解决以下问题:

  1、当用户选择了某个选项以后,该选项必须与其他选项不同,如多了选中标志;当用户选择其他选项时,已选项不受影响,除非用户修改已选项。

  2、当用户选择某个选项以后,在题目的后面括号中必须出现该选项的序号,如:ABCD等;当不选该选项后,相应的序号必须消失。

  3、当有多条题目的时候,用户应该可以任意修改已做题目,而这些不应该影响用户已完成的题目和最后成绩。

  4、当用户选择了正确的选项以后,系统必须进行记录,确定用户选择了所有的正确答案以
后才让用户得分,否则不能得分。

  5、当选择题的量很大时,如何减少制作的工作量。


  具体制作过程


  1、启动Flash5,按“Ctrl+F8”键在“Name”中输入按钮后选择[Button]制作一个按钮(具体可参照上期《单项选择题的制作》一文中的图1),也可以直接从单项选择题中将按钮复制过来,按钮将会自动储存在Library库中。需要提醒大家的是:通过复制组件可以实现课件之间的素材资源共享。

  2、按“Ctrl+F8”键创建一个名为选项A”MovieClip,用来显示选项A的两种选择状态(选中和没有选中),单击[OK]进入编辑状态。新建三个层,从上至下取名为:选中标志、按
钮及Actions、按钮序号,在层按钮及Actions”中按F6键插入关键帧,将Library库中的按钮分别拖放在该层的两帧中,注意两帧中的按钮位置要基本重合,可通过Align面板(“Ctrl+K”)确定其位置。然后为第1帧加上如下Actions语句:

  a = 0;//设定非选中状态时的值为0

  stop ();//让动画停止在第1

  再为第2帧加上如下Actions语句:

  a = 1;//设定选中状态时的值为1,这样做的目的是为了计算得分,通过判断a的值从而知道该选项是否被选择

  3、为层按钮及Actions”1帧中的按钮加上如下Actions语句:

  on (release) {

  gotoAndStop (2);

  }//单击选择后跳转到第2帧,显示为选中状态,此时a的值为1

  再为第2帧中的按钮加上如下Actions语句:

  on (release) {

  gotoAndStop (1);

  }//跳转到第1帧,显示为非选中状态,此时制作flasha的值为0

  4、在层按钮序号的第1帧中输入字母“A”,表示当前选项是A。在层选中标志的第2帧中
绘制一个小圆点,并且使小圆点的位置和按钮的中心重合,这样就形成了按钮的选中状态。再在该帧中输入一个字母“A”,这个字母用来是显示题目后面的答案,它的位置可以根据实际题目的位置来调整,影片选项A”的层如图1所示。


  图1

  5、打开Library库,选中选项A”影片后按鼠标右键,选择“Duplicate”弹出的对话框,在“Name”中输入选项B”。双击影片选项B”进入编辑状态,将序号和“Actions”里所有的“a”改为“b”,将层选中标志的字母“b”的位置稍稍向后移动,不能跟A重合或错位。利用这种方法制作选项CD,注意要修改其中的某些参数为C或者D,否则后面将无法进行变量传递判断,还要向后稍稍移动字母的位置,以免出现ABCD字母重叠的现象。


  6、按“Ctrl+F8”创建一个名为第一题MovieClip,插入一层后从上至下取名为题目选项及答案。在层题目中输入题目,要注意题目后面的括号要大一些,而且要让其位置正好与选项影片的选中标志中的按钮A等基本上重合。将Library库中的选项A、选项B、选项C、选项D拖放在层选项及答案的编辑区,然后在各个选项后面输入答案,调整好位置(可参照图2)。选中影片选项A”单击鼠标右键选择“Panels→Instance”打开“Instance”窗口,在“Name”中输入“a”,使用同样的方法分别将选项B、选项C、选项D“Instance Name”设为“b”“c”“d”


  图2

  7、复制Library库中的影片第一题得到影片第二题,然后双击影片第二题进入编辑状态,修改其中的题目和答案为第二题所需要的内容,其余的不变,这样就制作出了第二道
题,怎么样?很快吧!利用这种方法制作第三题、第四题,最后制作一个得分按钮(可到单项选择题中复制!嘻嘻)。

  8、单击层左上角的“Scene 1”回到场景中,将Library库中的四道题目拖放在编辑区中,分别将第一题第二题第三题第四题“Instance Name”设为“defen1”“defen2”“defen3”“defen4”。将得分按钮拖放到合适的位置,制作一个显示得分的文本框,参数如图3


  图3

  9、下面为得分按钮加上Actions语句:

  on (release) {

  if ((timu1.a1.a == 1) &&&& (timu1.b1.b == 1) &&&& (timu1.c1.c == 0) &&&& (timu1.d1.d == 1)) {

  defen1 = 5;

  //重点说明:假设第一题的答案为ABD而且选中了ABD则第一题得分是5分,如:timu1.a1.a == 1表示实例名为timu1下的实例名为a1中的a的值为1,其实这就是选项A选中时的变量“a”的值,其余的类似,利用这种方法可以进行选项的判断。

  } else {

  defen1 = 0;//否则得分将为0分。

  }

  if ((timu2.a1.a == 1) &&&& (timu2.b1.b == 1) &&&& (timu2.c1.c == 1) &&&& (timu2.d1.d == 0)) {

  defen2 = 5;

  } else {

  defen2 = 0;

  }

  if ((timu3.a1.a == 1) &&&& (timu3.b1.b == 1) &&&& (timu3.c1.c == 0) &&&& (timu3.d1.d == 1)) {

  defen3 = 5;

  } else {

  defen3 = 0;

  }

  if ((timu4.a1.a == 1) &&&& (timu4.b1.b == 1) &&&& (timu4.c1.c == 0) &&&& (timu4.d1.d == 1)) {

  defen4 = 5;


  } else {

  defen4 = 0;

  }

  zongfen = defen1+defen2+defen3+defen4;//使最后的总分为四道题目的得分之和。

  }

  10、按“Ctrl+Enter”键测试效果,可以看到多项选择题的主要功能已经实现了,稍微修改其中的某些参数还可以制作不定项选择题,有兴趣的朋友可以试一试。当然了,用Flash制作课件还有很多问题需要探讨,希望与大家共同进步。