用RadioButton组件和xml做的一个试卷提交后并计算成绩

代码块,及其详细的注释,还有下面的xml,我发现这些东西只要认真去做我相信大家都可以做出来,我在这里给大家一个参考,希望对初学者有用!
package
{
import flash.display.MovieClip;
import fl.controls.RadioButton;
import fl.controls.Button;
import fl.controls.RadioButtonGroup;
import flash.text.TextField;
import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
public class JuanZiMain extends MovieClip
{
private var btn:Button = new Button();
private var radioBtn:RadioButton;
private var arr:Array =[];//放RadioButton的数组
private var deFenArr:Array = [];//判断得分的数组
private var zu1:RadioButtonGroup = new RadioButtonGroup("1");//把RadioButton分成五组,每组为一题;
private var zu2:RadioButtonGroup = new RadioButtonGroup("2");
private var zu3:RadioButtonGroup = new RadioButtonGroup("3");
private var zu4:RadioButtonGroup = new RadioButtonGroup("4");
private var zu5:RadioButtonGroup = new RadioButtonGroup("5");
private var TiXingtxt:TextField=new TextField();//题型的文本,如“一、选择题”
private var deFenTxt:TextField=new TextField();//分数输出文本
private var txt:TextField;//题的选项文本;
private var txtArr:Array=[];
private var loader:URLLoader;
public function JuanZiMain()
{
//加载xml
loader=new URLLoader();
loader.load(new URLRequest("JuanZi.xml"));
loader.addEventListener(Event.COMPLETE,onCompleteHandler);
btn.addEventListener(MouseEvent.CLICK,onClickHandler);
}
private function onCompleteHandler(e:Event):void
{
var xml:XML = new XML(loader.data);//调用xml
for (var i:int=1; i<=20; i++)
{
radioBtn = new RadioButton();
radioBtn.width=300;
radioBtn.x = 30;
radioBtn.y = i * 20 + 40;
radioBtn.label=xml.lab[i-1];//从xml里面获取题目的选项;
arr.push(radioBtn);
stage.addChild(radioBtn);
}
for (var j:int=0; j<4; j++)//给RadioButton组件分组,每一题一组;一组共4个按钮;
{
zu1.addRadioButton(arr[j]);//往组中添加RadioButton
}
for (var m:int=4; m<8; m++)
{
arr[m].y += 30;
zu2.addRadioButton(arr[m]);
}
for (var n:int=8; n<12; n++)
{
arr[n].y += 60;
zu3.addRadioButton(arr[n]);
}
for (var w:int=12; w<16; w++)
{
arr[w].y += 90;
zu4.addRadioButton(arr[w]);
}
for (var h:int=16; h<20; h++)
{
arr[h].y += 120;
zu5.addRadioButton(arr[h]);
}
for(var k:int=0;k<5;k++)//循环生成5个放题目的文本
{
txt = new TextField();
txtArr.push(txt);
txt.x = 20;
txt.y =k*110+40;
txt.height=20;
txt.width=300;
txt.text = xml.tiMu[k];//从xml里面获取题目;
txt.selectable=false;//文本是否可选
stage.addChild(txt);
}
TiXingtxt.text = "一、选择题";
TiXingtxt.x=5;
TiXingtxt..y=10;
TiXingtxt.height=20;
TiXingtxt.selectable=false;//文本是否可选
stage.addChild(TiXingtxt);
btn.width=60;
btn.height=25;
btn.label="提交按钮";
btn.emphasized=true;//按钮边框
btn.move(270,610);//坐标
stage.addChild(btn);
deFenTxt.width=80;
deFenTxt.height=20;
deFenTxt.x=270;
deFenTxt.y=590;
deFenTxt.selectable=false;//文本不可选
stage.addChild(deFenTxt);
}
private function onClickHandler(e:MouseEvent):void
{
deFenTxt.text="";//每次单击过后先把分数文本清零再计算并赋值
deFenArr=[];//每次单击提交按钮之前让数组清零做到二次做题并提交
//下面的判断是:把选择正确的答案追加到数组中方便以后总分的判断;
if(arr[0].selected==true)//selected表示是否被选中,选中为true;
{
deFenArr.push(arr[0]);
}
if(arr[7].selected==true)
{
deFenArr.push(arr[7]);
}
if(arr[10].selected==true)
{
deFenArr.push(arr[10]);
}
if(arr[12].selected==true)
{
deFenArr.push(arr[12]);
}
if(arr[16].selected==true)
{
deFenArr.push(arr[16]);
}
//判断正确的答案在数组中的个数,然后输出得分
if(deFenArr.length==5)
{
deFenTxt.text="得分:"+"100";
}
else if(deFenArr.length==4)
{
deFenTxt.text="得分:"+"80";
}
else if(deFenArr.length==3)
{
deFenTxt.text="得分:"+"60";
}
else if(deFenArr.length==2)
{
deFenTxt.text="得分:"+"40";
}
else if(deFenArr.length==1)
{
deFenTxt.text="得分:"+"20";
}
else if(deFenArr.length==0)
{
deFenTxt.text="得分:"+"0";
}
}
}
}
xml里的内容
<?xml version="1.0" encoding="UIF-8" ?>
<root>
<lab>A、ActionScript3.0的运行环境是AVM2</lab>
<lab>B、ActionScript3.0的运行环境是JVM</lab>
<lab>C、MouseClip类是display类的子类</lab>
<lab>D、Sprite类是MovieClip类的子类</lab>
<lab>A、Bitmap->DisplayObject->EventDispatcher->Object</lab>
<lab>B、Shape->Sprite->DisplayObject->EventDispatcher</lab>
<lab>C、Graphics->Object</lab>
<lab>D、Lable->UIComponent->Sprite->DisplayObjectContainer</lab>
<lab>A、SimpleButton</lab>
<lab>B、Graphics</lab>
<lab>C、Rectagle</lab>
<lab>D、BitmapData</lab>
<lab>A、遍历数组过程中,正在被遍历的那个元素</lab>
<lab>B、数组的索引值</lab>
<lab>C、数组中的第一个元素</lab>
<lab>D、数组中的最后一个元素</lab>
<lab>A、位图图像是否支持每一个像素具有不同的透明度</lab>
<lab>B、位图图像的颜色变换</lab>
<lab>C、位图图像的ARGB值</lab>
<lab>D、BitmapData的透明度</lab>
<tiMu>1.请选择以下正确的陈述:</tiMu>
<tiMu>2.下列对类的继承关系描述错误的是:</tiMu>
<tiMu>3.以下哪个类不在flash.display包中:</tiMu>
<tiMu>4.for each(var obj:Object in arr){}中的obj代表:</tiMu>
<tiMu>5.BitmapData类的transparent属性描述:</tiMu>
</root>
浙公网安备 33010602011771号