做一个Flash+XML的考试系统
考试题xml.rar在XML中的文件内容如下:
<root>
<t1 key="A"> //key指本题的答案
<qu> 第1题 。。。。。。。</qu> //三个答案,当然也可以多,
<n1> 1.A 题目 </n1>
<n2> B题目 </n2>
<n3> C 题目 </n3>
</t1>
<t2 key="B">
<qu> 第2题 。。。。。。。</qu>
<n1> 2.A 题目 </n1>
<n2> B题目 </n2>
<n3> C 题目 </n3>
</t2>
。。。。。。。
</root>
第一帧上AS:欢迎界面,做个按纽,点击按纽后进入第二帧
第二帧 上AS: 解析加载的XML数据,建立几个数组存放题目,选项和答案。实现了随机出题,但不重复。
AS为:
myxml = new XML(); //建一XML对象
myxml.ignoreWhite = true; //忽略空格
System.useCodepage = true; //正确显示中文
myxml.load("mmxml.xml"); //加载mmxml.xml文档
key_arr = new Array(); //存放正 确答案的变量
t_arr = new Array(); //存放题目及选项的变量
result_arr = new Array(); //记录随机排列题目的变量
mykey_arr = new Array(); //记录你做出的答案。
myxml.onLoad = function(ss) { //加载XML
if (ss) { //如果加载成功
trace("load XML OK");
len = myxml.firstChild.childNodes.length; //将题目数量存入len中
tt = myxml.firstChild.childNodes; //下面将结果存入数据
for (var i = 0; i result_arr[i] = i;
key_arr[i] = tt[i].attributes.key; //存答案
t_arr[i] = new Object(); //将题目及答案存入对象。
t_arr[i].question = tt[i].childNodes[0].firstChild;
t_arr[i].k1 = tt[i].childNodes[1].firstChild;
t_arr[i].k2 = tt[i].childNodes[2].firstChild;
t_arr[i].k3 = tt[i].childNodes[3].firstChild;
}
for (var i = 0; i //随机排列题目
tmp = random(len);
v1 = result_arr[i];
result_arr[i] = result_arr[tmp];
result_arr[tmp] = v1;
v2 = key_arr[i];
key_arr[i] = key_arr[tmp];
key_arr[tmp] = v2;
}
nextFrame();
} else {
trace("load XML error");
}
};
stop();
第三帧上AS: 显示题目及选项,放置一按纽操作下一题。
AS: question是一个MC,在库中设置链接ID名:question,它包含有三个RadioButton组件,组名相同,实例名分别为:A_btn,B_btn,C_btn,四个动态文本框,实例名分别为:
t_txt, k1_txt, k2_txt, k3_txt. attachMovie("question", "qu", 1,{_x:50,_y:50});
var v1 = 0;
qu.t_txt.selectable=false;
qu.t_txt.text = t_arr[result_arr[v1]].question;
qu.k1_txt.text = t_arr[result_arr[v1]].k1;
qu.k2_txt.text = t_arr[result_arr[v1]].k2;
qu.k3_txt.text = t_arr[result_arr[v1]].k3;
v1++;
next_btn.onRelease = function() {
if (qu.A_btn.selected == true) {
mykey_arr[v1-1] = "A";
}
if (qu.B_btn.selected == true) {
mykey_arr[v1-1] = "B";
}
if (qu.C_btn.selected == true) {
mykey_arr[v1-1] = "C";
}
if (v1 qu.A_btn.selected = false;
qu.B_btn.selected = false;
qu.C_btn.selected = false;
qu.t_txt.text = t_arr[result_arr[v1]].question;
qu.k1_txt.text = t_arr[result_arr[v1]].k1;
qu.k2_txt.text = t_arr[result_arr[v1]].k2;
qu.k3_txt.text = t_arr[result_arr[v1]].k3;
v1++;
} else {
qu.removeMovieClip();
nextFrame();
}
};
第四帧为检测和显示结果,用一动态文本框显示成绩,变量名为total.
AS: var total = 0;
for (var i = 0; i if (mykey_arr[i] == key_arr[i]) { //你做的结果和答案对比
total += 10;
//每题10分
}
}
replay_btn.onRelease=function(){ //放上重新做一次的按纽
gotoAndStop(1);
}
好了,按以上方法自己也可以做个来试试。
考试题xml.rar