在Flash MX Professional 2004中,雖然Flash本身提供了制作測驗的模板,但是,一方面,運用系統(tǒng)自帶的模板創(chuàng)作練習課件,需要掌握一定的Flash基礎(chǔ)知識;另一方面,利用模板創(chuàng)作練習,雖然簡便,但不利于后期的維護與修改,特別是當需要同時添加數(shù)量較多的題目時,測驗模板就顯得有些力不從心了。本文介紹一種全新的制作思路:結(jié)合XML技術(shù),將試題信息存放在外部XML文件中,程序運行時,通過Flash ActionScript讀取XML文件中的數(shù)據(jù),并呈現(xiàn)給用戶。
設(shè)計思路
本練習模板主要由用戶界面文件、數(shù)據(jù)文件和動作腳本文件三部分組成。用戶界面文件向使用者顯示試題信息、交互信息(交互按鈕和交互結(jié)果)等;數(shù)據(jù)文件主要用來存放試題內(nèi)容,如題號、題干、各備選項以及正確答案等,它是一個獨立的XML文件;動作腳本文件則是用戶界面和數(shù)據(jù)間通信的橋梁,它將XML文檔中的數(shù)據(jù)解析后存放在數(shù)組中,并通過界面文件顯示出來。在Flash文件中,可以用Flash自帶的腳本編輯器編寫動作腳本文件。運行時,要將上述三個文件放在同一目錄下。本練習模板的各部分關(guān)系及其流程如圖1所示。
圖1 模板各部分間的關(guān)系及程序流程
技術(shù)實現(xiàn)
上文中我們介紹了該練習模板的設(shè)計思路。接下來,我們結(jié)合一個具體的實例,介紹一下該練習模板的制作過程。
創(chuàng)建用戶界面文件
1.在Flash舞臺上,創(chuàng)建如圖2所示的內(nèi)容,各實例的名稱在圖中已給出。
注意:后綴為_txt的實例是動態(tài)文本框,后綴為_pb的實例是Button組件,后綴為_rb的實例是Radio-Button組件。
圖2 各實例的名稱及布局
2.設(shè)置RadioButton實例的屬性。選中chA_rb實例,打開“屬性”面板,在“屬性”面板中選擇“參數(shù)”選項卡,將data參數(shù)的值設(shè)為1。以此類推,chB_rb、chC_rb、chD_rb的data參數(shù)值分別設(shè)為2、3、4,以便在程序中與正確答案進行匹配。
3.設(shè)置動態(tài)文本框的屬性。分別選中title_txt、chA_txt、chB_txt、chC_txt和chD_txt,在“屬性”面板中將其屬性設(shè)置為“多行”,以滿足題干及選項內(nèi)容過多時的需要。
數(shù)據(jù)文件
數(shù)據(jù)文件是一個XML文件,XML語言是Extensible Markup Language的簡稱,它是W3C組織采取簡化SGML的策略而制定的一種可擴充的標記語言,可以根據(jù)信息提供者的需要自行定義標記、屬性名及描述法。在本實例中,讀者不需要專門學習XML語言,只要按照下面的格式創(chuàng)建一個XML文件即可。如果沒有專門的XML編輯器,可以用記事本來編寫。
<?xml version="1.0"?>
<questions>
<question>
<id>1</id>
<title>世界上第一臺電子數(shù)字計算機誕生于( )</title>
<answerA>1945年</answerA>
<answerB>1946年</answerB>
<answerC>1947年</answerC>
<answerD>1948年</answerD>
<rightanswer>2</rightanswer>
</question>
…
</questions>
在該XML文件中,<questions>是本XML文件的根元素,一個XML文件只能有一個根元素。<id>元素記錄題目的序號;<title>元素記錄題干;<answerA>、<answerB>、<answerC>、<answerD>分別記錄四個備選項;<rightanswer>記錄正確答案。當向程序中添加題目時,只需創(chuàng)建若干個<question>元素,并添加題目序號、題目名稱、備選項及正確答案即可。
有一點請讀者注意,當用記事本編輯XML文件時,保存時以.xml作為文件的擴展名,并在“另存為”對話框中的“編碼”項中選擇UTF-8。
動作腳本文件
我們創(chuàng)建了用戶界面文件和數(shù)據(jù)文件之后,如何才能將數(shù)據(jù)文件中的數(shù)據(jù)在用戶界面文件中顯示出來呢?這就要用到我們將要介紹的動作腳本文件了。動作腳本文件負責導入外部的XML文件,并對用戶界面文件中的交互事件(如click事件)進行處理。
在“文件”菜單中單擊“新建”子菜單,彈出“新建文檔”對話框,在“常規(guī)”選項卡中選擇“動作腳本文件”就可以創(chuàng)建一個外部動作腳本文件,將其命名為action.as。下面是action.as文件中的幾處關(guān)鍵代碼。
1.解析XML文檔。要將外部的XML文檔中的數(shù)據(jù)導入到Flash程序中來,需要調(diào)用XML對象的load方法來加載外部XML文檔,格式為:questionXML.load("question.xml");
其中questionXML為XML對象,而question.xml則為外部XML文檔的相對路徑。
當XML文檔加載到Flash程序中后,需要在XML對象的onLoad事件中對XML數(shù)據(jù)進行解析,并將數(shù)據(jù)存入相應的數(shù)組中,其代碼如下:
questionXML.onLoad=function(status):Void
{
for (vari=0;i<n;i++)
{
vartempNode:XMLNode=new XMLNode();
tempNode=this.firstChild.childNodes[i];
id_array.push(tempNode.firstChild.firstChild.nodeValue);
title_array.push(tempNode.childNodes[1].firstChild.nodeValue);
chA_array.push(tempNode.childNodes[2].firstChild.nodeValue);
chB_array.push(tempNode.childNodes[3].firstChild.nodeValue);
chC_array.push(tempNode.childNodes[4].firstChild.nodeValue);
chD_array.push(tempNode.childNodes[5].firstChild.nodeValue);
rightAnswer_array.push(tempNode.childNodes[6].firstChild.nodeValue);
}
}
2.處理導航按鈕的click事件。單擊導航按鈕,可以在不同的題目之間實現(xiàn)切換,這里以first_pb為例,其他按鈕的處理方式與此大體相同,只是在細節(jié)上有些差異,其代碼如下:
function first_pb_click(evt:Object):Void
{
CN=0;
first_pb.enabled=false;
prev_pb.enabled=false;
next_pb.enabled=true;
last_pb.enabled = true;
cq_txt.text = String(CN + 1);
id_txt.text = String(id_array[CN]);
title_txt.text = title_array[CN];
chA_txt.text = chA_array[CN];
chB_txt.text = chB_array[CN];
chC_txt.text = chC_array[CN];
chD_txt.text = chD_array[CN];
}
3.處理check_pb的click事件。當用戶單擊check_pb按鈕后,可以對用戶所做的問題進行檢查,并給出相應的反饋信息,其代碼如下:
function check_pb_click(evt:Object):Void
{
check_pb.enabled = false;
//判斷是否答對
if(radioGroup.selectedData == rightAnswer_array[CN])
feedback_txt.text = "恭喜你,你答對了!繼續(xù)努力!";
else
feedback_txt.text = "真遺憾,你答錯了,再仔細考慮考慮吧?。ⅲ?/p>
}
4.在該Flash程序中,我們使用了Button組件和RadioButton組件。在Flash MX Professional 2004中,組件使用廣播器/偵聽器模型來處理它們的事件(如click事件等)。因此,我們需要為程序中的組件注冊偵聽器,來處理它們的事件。下面分別是first_pb和check_pb注冊偵聽器的代碼:
first_pb.addEventListener("click",first_pb_click);
check_pb.addEventListener("click",check_pb_click);
addEventListener方法有兩個參數(shù):第一個參數(shù)是事件的名稱;第二個參數(shù)是偵聽器對象,這里我們使用函數(shù)作為click事件的偵聽器對象。
動作腳本文件創(chuàng)建后,在用戶界面文件中,新建一個action圖層,它位于所有圖層的上方。打開“動作”面板,在該圖層的第一幀中輸入如下命令:
#include“action.as”
這樣運行本模板就可以了。
本模板在Flash MX Professional 2004下運行通過,其運行效果如圖3所示。
<img src="/qkimages/xxjy/xxjy200612/xxjy20061228-3-l.jpg" hspace="15" vspace="5" align="">
圖3運行效果圖
結(jié)束語
使用Flash制作的選擇題測驗模板具有文件體積小、交互性強、表現(xiàn)力豐富、便于維護與更新等特點,特別適合制作成網(wǎng)絡(luò)課件和在線測試題。本文主要介紹使用Flash設(shè)計交互選擇題測驗模板的方法,設(shè)計要點是利用UI 組件構(gòu)建選擇題模板中的交互控件;利用外部的XML文件存儲試題的數(shù)據(jù);利用動作腳本語言實現(xiàn)程序邏輯結(jié)構(gòu)。當需要對測試題進行修改與更新時,只需要修改外部的XML文檔即可。該選擇題測驗模板不但可以單獨使用,而且可以和具體的課程結(jié)合起來,嵌入到網(wǎng)絡(luò)課程中。其他類型的測驗題課件(判斷題、填空題等)也可以用類似的方法進行設(shè)計和制作。