做一个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