基于XML的Flash选择题测验模板的研究与实践

时间:2022-08-05 11:10:32

基于XML的Flash选择题测验模板的研究与实践

在Flash MX Professional 2004中,虽然Flash本身提供了制作测验的模板,但是,一方面,运用系统自带的模板创作练习课件,需要掌握一定的Flash基础知识;另一方面,利用模板创作练习,虽然简便,但不利于后期的维护与修改,特别是当需要同时添加数量较多的题目时,测验模板就显得有些力不从心了。本文介绍一种全新的制作思路:结合XML技术,将试题信息存放在外部XML文件中,程序运行时,通过Flash ActionScript读取XML文件中的数据,并呈现给用户。

设计思路

本练习模板主要由用户界面文件、数据文件和动作脚本文件三部分组成。用户界面文件向使用者显示试题信息、交互信息(交互按钮和交互结果)等;数据文件主要用来存放试题内容,如题号、题干、各备选项以及正确答案等,它是一个独立的XML文件;动作脚本文件则是用户界面和数据间通信的桥梁,它将XML文档中的数据解析后存放在数组中,并通过界面文件显示出来。在Flash文件中,可以用Flash自带的脚本编辑器编写动作脚本文件。运行时,要将上述三个文件放在同一目录下。本练习模板的各部分关系及其流程如图1所示。

图1 模板各部分间的关系及程序流程

技术实现

上文中我们介绍了该练习模板的设计思路。接下来,我们结合一个具体的实例,介绍一下该练习模板的制作过程。

创建用户界面文件

1.在Flash舞台上,创建如图2所示的内容,各实例的名称在图中已给出。

注意:后缀为_txt的实例是动态文本框,后缀为_pb的实例是Button组件,后缀为_rb的实例是Radio-Button组件。

图2 各实例的名称及布局

2.设置RadioButton实例的属性。选中chA_rb实例,打开“属性”面板,在“属性”面板中选择“参数”选项卡,将data参数的值设为1。以此类推,chB_rb、chC_rb、chD_rb的data参数值分别设为2、3、4,以便在程序中与正确答案进行匹配。

3.设置动态文本框的属性。分别选中title_txt、chA_txt、chB_txt、chC_txt和chD_txt,在“属性”面板中将其属性设置为“多行”,以满足题干及选项内容过多时的需要。

数据文件

数据文件是一个XML文件,XML语言是Extensible Markup Language的简称,它是W3C组织采取简化SGML的策略而制定的一种可扩充的标记语言,可以根据信息提供者的需要自行定义标记、属性名及描述法。在本实例中,读者不需要专门学习XML语言,只要按照下面的格式创建一个XML文件即可。如果没有专门的XML编辑器,可以用记事本来编写。

<?xml version="1.0"?>

<questions>

<question>

<id>1</id>

<title>世界上第一台电子数字计算机诞生于( )</title>

<answerA>1945年</answerA>

<answerB>1946年</answerB>

<answerC>1947年</answerC>

<answerD>1948年</answerD>

<rightanswer>2</rightanswer>

</question>

</questions>

在该XML文件中,<questions>是本XML文件的根元素,一个XML文件只能有一个根元素。<id>元素记录题目的序号;<title>元素记录题干;<answerA>、<answerB>、<answerC>、<answerD>分别记录四个备选项;<rightanswer>记录正确答案。当向程序中添加题目时,只需创建若干个<question>元素,并添加题目序号、题目名称、备选项及正确答案即可。

有一点请读者注意,当用记事本编辑XML文件时,保存时以.xml作为文件的扩展名,并在“另存为”对话框中的“编码”项中选择UTF-8。

动作脚本文件

我们创建了用户界面文件和数据文件之后,如何才能将数据文件中的数据在用户界面文件中显示出来呢?这就要用到我们将要介绍的动作脚本文件了。动作脚本文件负责导入外部的XML文件,并对用户界面文件中的交互事件(如click事件)进行处理。

在“文件”菜单中单击“新建”子菜单,弹出“新建文档”对话框,在“常规”选项卡中选择“动作脚本文件”就可以创建一个外部动作脚本文件,将其命名为action.as。下面是action.as文件中的几处关键代码。

1.解析XML文档。要将外部的XML文档中的数据导入到Flash程序中来,需要调用XML对象的load方法来加载外部XML文档,格式为:questionXML.load("question.xml");

其中questionXML为XML对象,而question.xml则为外部XML文档的相对路径。

当XML文档加载到Flash程序中后,需要在XML对象的onLoad事件中对XML数据进行解析,并将数据存入相应的数组中,其代码如下:

questionXML.onLoad=function(status):Void

for (vari=0;i<n;i++)

vartempNode:XMLNode=new XMLNode();

tempNode=this.firstChild.childNodes[i];

id_array.push(tempNode.firstChild.firstChild.nodeValue);

title_array.push(tempNode.childNodes[1].firstChild.nodeValue);

chA_array.push(tempNode.childNodes[2].firstChild.nodeValue);

chB_array.push(tempNode.childNodes[3].firstChild.nodeValue);

chC_array.push(tempNode.childNodes[4].firstChild.nodeValue);

chD_array.push(tempNode.childNodes[5].firstChild.nodeValue);

rightAnswer_array.push(tempNode.childNodes[6].firstChild.nodeValue);

2.处理导航按钮的click事件。单击导航按钮,可以在不同的题目之间实现切换,这里以first_pb为例,其他按钮的处理方式与此大体相同,只是在细节上有些差异,其代码如下:

function first_pb_click(evt:Object):Void

CN=0;

first_pb.enabled=false;

prev_pb.enabled=false;

next_pb.enabled=true;

last_pb.enabled = true;

cq_txt.text = String(CN + 1);

id_txt.text = String(id_array[CN]);

title_txt.text = title_array[CN];

chA_txt.text = chA_array[CN];

chB_txt.text = chB_array[CN];

chC_txt.text = chC_array[CN];

chD_txt.text = chD_array[CN];

3.处理check_pb的click事件。当用户单击check_pb按钮后,可以对用户所做的问题进行检查,并给出相应的反馈信息,其代码如下:

function check_pb_click(evt:Object):Void

check_pb.enabled = false;

//判断是否答对

if(radioGroup.selectedData == rightAnswer_array[CN])

feedback_txt.text = "恭喜你,你答对了!继续努力!";

else

feedback_txt.text = "真遗憾,你答错了,再仔细考虑考虑吧!";

4.在该Flash程序中,我们使用了Button组件和RadioButton组件。在Flash MX Professional 2004中,组件使用广播器/侦听器模型来处理它们的事件(如click事件等)。因此,我们需要为程序中的组件注册侦听器,来处理它们的事件。下面分别是first_pb和check_pb注册侦听器的代码:

first_pb.addEventListener("click",first_pb_click);

check_pb.addEventListener("click",check_pb_click);

addEventListener方法有两个参数:第一个参数是事件的名称;第二个参数是侦听器对象,这里我们使用函数作为click事件的侦听器对象。

动作脚本文件创建后,在用户界面文件中,新建一个action图层,它位于所有图层的上方。打开“动作”面板,在该图层的第一帧中输入如下命令:

#include“action.as”

这样运行本模板就可以了。

本模板在Flash MX Professional 2004下运行通过,其运行效果如图3所示。

<img src="/qkimages/xxjy/xxjy200612/xxjy20061228-3-l.jpg" hspace="15" vspace="5" align="">

图3运行效果图

结束语

使用Flash制作的选择题测验模板具有文件体积小、交互性强、表现力丰富、便于维护与更新等特点,特别适合制作成网络课件和在线测试题。本文主要介绍使用Flash设计交互选择题测验模板的方法,设计要点是利用UI 组件构建选择题模板中的交互控件;利用外部的XML文件存储试题的数据;利用动作脚本语言实现程序逻辑结构。当需要对测试题进行修改与更新时,只需要修改外部的XML文档即可。该选择题测验模板不但可以单独使用,而且可以和具体的课程结合起来,嵌入到网络课程中。其他类型的测验题课件(判断题、填空题等)也可以用类似的方法进行设计和制作。

上一篇:伙伴教学在信息技术课堂上的尝试 下一篇:信息技术与学科课程整合的有效性