張艷艷
(浙江海洋學院數理與信息學院,浙江舟山 316004)
考試系統(tǒng)是實現無紙化考試的重要手段,可以全面考核學生的基礎知識和基本操作能力。目前考試系統(tǒng)大多采用ASP、VB來制作,本考試系統(tǒng)采用了全新的思路,即將flash與xml結合起來,在外部xml文檔中存儲題目和正確答案,在flash軟件中制作考試系統(tǒng)界面并調用xml文檔,這樣做的優(yōu)點是:一、獨立的xml試題庫可以確??荚嚨墓叫?。二、xml文檔易于擴充,可以非常方便地添加刪除題目,提高考試系統(tǒng)的通用性。三、使用flash來搭建平臺,可以使考試系統(tǒng)的體積做到非常小巧。
xml是可擴展標記語言(eXtensible Markup Language)的縮寫,在xml文檔中,用戶可以自己定義標記,標記擴充容易、靈活性大。xml文檔容易創(chuàng)建,可讀性強,非常簡潔[1]。xml文檔采用樹狀組織結構,每個標記為一個節(jié)點,有且只有一個根節(jié)點。本考試系統(tǒng)中單項選擇題對應的xml代碼為:
<root>
<timu>
<tigan>1.以助記符代替機器碼的語言是()</tigan>
<optiona>高級語言</optiona>
<optionb>匯編語言</optionb>
<optionc>C 語言</optionc>
<optiond>VB</optiond>
<answer>2</answer>
</timu>
……
</root>
上文中<timu> </timu>是用來存放題目的標記,<tigan> </tigan>是用來存放題干的標記,<optiona> </optiona>是用來存放選項A的標記,<answer></answer>是用來存放正確答案的標記。如果需要更改題目或選項,只需更改各標記中的相應內容即可。通過添加xml文檔中的標記,可以添加多道題目。
本代碼采用了專門的xml編輯器xmlwriter來編寫。為了解決在flash中顯示中文會出現亂碼的問題,在xml文檔里要指明編碼格式:“encoding="UTF-8"”,并且要在flash的幀動作中加入語句System.useCode-Page=true。
Flash actionscript2.0使用childNodes來訪問xml的子節(jié)點,而actionscript3.0[2]對xml的支持更加完美。在AS3.0中通過URLloader來加載xml文檔,并且可以直接使用“.”加子元素的名稱來訪問子節(jié)點。首先需要定義多個數組來存放xml節(jié)點的相應內容,其次在加載時,需要定義URLRequest和URLLoader對象,并添加事件偵聽器。加載xml文檔的核心代碼為:
var myXML:XML=new XML(); //定義XML對象
myXML.ignoreWhitespace=true; //忽略空白
var myXMLURL:URLRequest=new URLRequest("xuanze.xml");
var myLoader:URLLoader=new URLLoader(myXMLURL);
myLoader.addEventListener("complete",xmlLoaded);
function xmlLoaded(evtObj:Event){ //定義加載函數
var myXML:XML=XML(myLoader.data);
for(var i=0;i<myXML.length;i++){
title.push(myXML.timu[i].tigan); //將 xml內容加載到數組中
option1.push(myXML.timu[i].optiona);
option2.push(myXML.timu[i].optionb);
option3.push(myXML.timu[i].optionc);
option4.push(myXML.timu[i].optiond);
}
}
上文的代碼實現的功能是將xml文檔中各個節(jié)點的內容放入相應的數組之中,其中將題干的內容存放在title數組中,四個單選項的內容分別放在option1~option4數組中。為了在flash界面中顯示出相應的內容,需要將數組的內容賦值給各個動態(tài)文本框,如將title數組中的內容賦值給la1文本框[3],其核心代碼如下:
var NUM=0;
function next_btn_click(evtObj:Event){
NUM++;
if(NUM==(n)){
next_btn.enabled=false;}
la1.text=title[NUM]; //將題干的內容顯示在la1文本框中
op1.text=option1[NUM]; //將各選項顯示在對應的動態(tài)文本框中
op2.text=option2[NUM];op3.text=option3[NUM];
op4.text=option4[NUM];
}
next_btn.addEventListener("click",next_btn_click);
如果采用默認格式,則在flash界面中顯示出來的字號偏小,針對這種情況,可以采用兩種解決辦法,一種是使用CSS樣式[4]來設置xml文檔的顯示格式,另一種是直接在flash中使用TextFormat對象設置顯示格式。本系統(tǒng)采用了后一種方法:
var mytf:TextFormat=new TextFormat();
mytf.color=0x0099CC;//設置顏色
mytf.size=17;//設置字號
la1.setStyle("textFormat",mytf);
op1.setStyle("textFormat",mytf);
op2.setStyle("textFormat",mytf);
op3.setStyle("textFormat",mytf);
op4.setStyle("textFormat",mytf);
本考試系統(tǒng)包含主界面、單項選擇題頁面、多項選擇題頁面、判斷題頁面和反饋頁面,在flash中分別設置不同關鍵幀,設計不同的界面。
以單項選擇題為例,界面中包含顯示題干的文本框(實例名la1),顯示各備選項的四個文本框(實例名為op1-op4),以及“上一題”和“下一題”按鈕(實例名分別為before_btn和next_btn)。界面如下圖所示:

圖1 單項選擇題頁面Fig.1 Page of monomial-choices

圖2 加載xml文檔后單項選擇題頁面Fig.2 Page of monomial-choices after loading xml
多項選擇題頁面與此類似,不同之處是使用復選按鈕替換了單選按鈕。判斷題可以直接使用單項選擇題的形式,設置選擇項為“是”或“否”。
此環(huán)節(jié)設置動態(tài)文本框顯示用戶回答正確的題目數及得分。首先在上圖單項選擇題的頁面中,設置四個單選按鈕同屬mygroup組中,并且給其value屬性分別賦值。其次將數組中的正確答案與單選按鈕的value值進行匹配,如果相同,則表示回答正確的變量加1。最后在flash的關鍵幀中顯示答對的題目數和得分。
本考試系統(tǒng)采用外部的xml文檔存放考試題目,實現了單項選擇題、多項選擇題和判斷題的測試。Flash制作的考試系統(tǒng),體積小巧,安裝方便。Xml除了可以與flash結合構建考試系統(tǒng),也可以與java結合,或者直接生成PDF試卷??傊?,隨著人們對xml技術研究的深入,xml必將對教育教學產生更大的影響。
[1]Comp-U-Learn Tech India Ltd.賈素玲,王強等編譯.XML核心技術[M].北京:高等教育出版社,2005:8.
[2]楊 珊.征服Flash CS4中文版完全實戰(zhàn)學習手冊[M].北京科海電子出版社,2009:226-543.
[3]張培山.基于XML的flash選擇題測驗模板的研究與實踐[J].信息技術教育,2006.12:69-71.
[4]黃泳瑜,徐蕙英.XML網頁設計應用基礎教程[M].北京:中國鐵道出版社,2006:86.