用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>

 

posted on 2012-10-16 23:09  笔墨丹青  阅读(533)  评论(0)    收藏  举报

导航