盛 磊
(杭州師范大學(xué)錢江學(xué)院,浙江 杭州310012)
隨著多媒體技術(shù)的普及,多媒體教育技術(shù)已經(jīng)成為各類高職高校的計(jì)算機(jī)基礎(chǔ)教育課程.多媒體技術(shù)課程包括FLASH、PHOTOSHOP以及網(wǎng)頁制作等內(nèi)容.FLASH 在多媒體技術(shù)課程中占有重要地位,其表現(xiàn)形式豐富、文件體積小、運(yùn)行平臺廣泛、兼容性強(qiáng)等特點(diǎn),被廣泛運(yùn)用于網(wǎng)站、多媒體演示以及課堂教學(xué)中.
FLASH 課程教學(xué)與其他課程教學(xué)相比,包含更多的案例講解和演示,學(xué)生需要花更多時間進(jìn)行課程練習(xí),才能將知識靈活運(yùn)用.傳統(tǒng)教學(xué)過程中,對于學(xué)生頻繁的練習(xí)作品,通過手工方式進(jìn)行批閱評價,不但需要花費(fèi)大量的時間和精力,而且對學(xué)生評價標(biāo)準(zhǔn)也無法完全一致.特別針對多媒體類考試,沒有一個公平公正的評價標(biāo)準(zhǔn),一直是FLASH 多媒體教學(xué)的困惑.
FLASH 文檔的主體文件FLA 文檔包含F(xiàn)lash文檔的媒體、時間軸和腳本基本信息的文件[1].運(yùn)用計(jì)算機(jī)實(shí)現(xiàn)自動評價的關(guān)鍵在于對該文檔進(jìn)行全面的解析,通過分析給出相應(yīng)得分點(diǎn).FLASH 文檔和其他文本文檔不同,該類文檔無法直接被第三方軟件讀取和分析,這給使用計(jì)算機(jī)評價帶來一定的困難.
本文基于JSFL技術(shù),提出一個FLASH 自動評價中間件實(shí)現(xiàn)方法,很好地解決目前FLASH 自動評價的瓶頸問題.
在FLASH 中包含有兩種運(yùn)行腳本類型.一種是AS(Action Script),用于SWF 文件在Flash Player環(huán)境中(即播放SWF 文件期間)執(zhí)行動作的腳本;另一種是Flash JavaScript API,它基于文檔對象模型(DOM),該模型允許使用JavaScript對象訪問Flash(FLA)文檔.用戶可以編寫和編輯Flash JavaScript(JSFL)文件,來解析Flash(FLA)文檔,獲取其中的文檔屬性、圖層屬性、幀屬性、對象屬性等等.計(jì)算機(jī)可以通過JSFL運(yùn)行解析的結(jié)果,來評價學(xué)生作品的正確性.
基于JSFL技術(shù)的FLASH 自動評價有兩種方法.一種方法是直接在JSFL 語言中給出評價結(jié)果,使用該方法從一定程度上更快的給出評價結(jié)果,但需要給每一個不同的FLASH 作品評分標(biāo)準(zhǔn)編寫不同的JSFL腳本,沒有通用性[2].另一種方法是編寫統(tǒng)一的JSFL 腳本,對文檔進(jìn)行全面的解析,在中間件程序中,對每個知識點(diǎn)進(jìn)行判定并給出評價結(jié)果,使用該方法可以減輕頻繁編寫JSFL 的壓力,在中間件程序中,編寫不同題型的評判標(biāo)準(zhǔn),對于程序設(shè)計(jì)來說更加方便.本文采取第二種方法,使用Visual Basic 6.0設(shè)計(jì)并實(shí)現(xiàn)了FLASH 自動評價中間件技術(shù).
FLASH 自動評價中間件需要配合評價系統(tǒng)軟件運(yùn)行.由評價系統(tǒng)軟件提供學(xué)生作品的基本配置(.ini)文檔,改文檔包括FLA 源文件路徑、評價題號等信息,由中間件程序運(yùn)行后給出每個點(diǎn)的得分情況、詳細(xì)評價結(jié)果以及總分信息的配置(.ini)文檔,供評價系統(tǒng)進(jìn)行進(jìn)一步處理.
FLASH 自動評價中間件實(shí)現(xiàn)的基本思路是根據(jù)評價系統(tǒng)給出的作品配置信息,調(diào)用JFSL腳本對學(xué)生FLA 文檔進(jìn)行解析,生成解析(ini格式)文檔,交還給中間件,由中間件程序根據(jù)作品題號,將解析結(jié)果與正確結(jié)果進(jìn)行匹配,給出具體得分以及評價結(jié)果,生成評價結(jié)果配置文檔,交由評價系統(tǒng)進(jìn)行處理.該思路的基本流程如圖1所示.
圖1 中間件實(shí)現(xiàn)流程圖Fig.1 The middleware implementation flow chart
根據(jù)中間件實(shí)現(xiàn)思路和流程,設(shè)計(jì)并實(shí)現(xiàn)基于JSFL技術(shù)的FLASH 自動評價中間件.該中間件程序由評價系統(tǒng)來進(jìn)行調(diào)用執(zhí)行.現(xiàn)有以下案例.
表1 案例題目和評分標(biāo)準(zhǔn)Tab.1 Subject case and scoring criteria
需要實(shí)現(xiàn)以上FLASH 作品自動評價主要實(shí)現(xiàn)過程如下.
3.2.1 讀取作品配置信息
學(xué)生作品配置信息由評價系統(tǒng)提供,相關(guān)配置文檔如下:
由中間件程序讀取相關(guān)配置信息.學(xué)生作品在配置選項(xiàng)TestDir目錄中,以指定名稱flash.fla保存.
中間件實(shí)現(xiàn)關(guān)鍵代碼如下:
其中ReadIniFile函數(shù)是用于讀取INI配置文檔的操作函數(shù).讀取FLASH 作品的題號和答題目錄信息.
3.2.2 JSFL文件解析過程
中間件程序讀取FLASH 作品基本信息后,調(diào)用FLASH 主程序運(yùn)行JSFL腳本,對FLA 文檔進(jìn)行解析.該解析過程包括Document對象的屬性、筆觸對象屬性、庫對象屬性、濾鏡對象屬性、圖層屬性、幀屬性、幀中實(shí)例及對象屬性、場景信息屬性等信息.
JSFL腳本是中間件實(shí)現(xiàn)的重要環(huán)節(jié).利用該腳本讀取FLA 文檔的屬性信息,并保存到解析文檔中.
JSFL腳本執(zhí)行主體如下:
其中,ExportFlash()是該腳本中的重要函數(shù),用于解析FLA 各種對象屬性.以案例為例:
1)獲取圖層屬性的關(guān)鍵代碼
其中WriteFlashProperty Value方法用于將獲取到的屬性,寫入到解析文檔中.JSFL中圖層對象以數(shù)組形式存放,其中的sound Name屬性和soundSync屬性分別用來獲取圖層聲音和同步方式的屬性.
2)獲取圖層中對象Alpha屬性的關(guān)鍵代碼
其中,JSFL中實(shí)例對象的color AlphaPercent屬性用來獲取Alpha百分比值.
3)獲取幀對象中動畫類型屬性的關(guān)鍵代碼
JSFL中幀對象以數(shù)組形式存放,tween Type屬性用于讀取幀動畫類型.如果是動畫補(bǔ)間則返回“motion”,形狀補(bǔ)間則返回“shape”.
4)獲取幀腳本的關(guān)鍵代碼
JSFL中圖層對象的actionScript 屬性用于獲取該圖層的腳本代碼.
FLA 文檔解析完成后,將生成解析結(jié)果文檔.
3.2.3 中間件程序評價過程
中間件程序獲得解析結(jié)果文檔,對解析結(jié)果進(jìn)行進(jìn)一步分析.以案例為例:
1)圖層中聲音屬性評價關(guān)鍵代碼
其中,cfp類中的Get Property方法用于讀取解析文檔中參數(shù)值.WriteIniFile方法用于將錯誤信息輸出到結(jié)果文檔中.
2)圖層同步方式評價關(guān)鍵代碼
其中,如果同步方式是數(shù)據(jù)流,則返回“stream”.通過對返回字符串判斷,評價最終結(jié)果.
3)圖層顏色屬性評價關(guān)鍵代碼
由于數(shù)組下標(biāo)從0開始編號,獲取第41幀屬性,在frame數(shù)組下標(biāo)為40的位置中.
4)幀對象動畫類型評價關(guān)鍵代碼
如果該幀動畫類型返回值為“motion”,則表示作品在該幀被設(shè)置為動作補(bǔ)間.
5)幀腳本評價關(guān)鍵代碼
通過instr方法,對腳本進(jìn)行文本比對,判定是否包含指定腳本.
6)評價結(jié)果保存到文檔
3.2.4 評價結(jié)果展示
評價結(jié)果以INI配置文檔形式保存,基于以上案例,運(yùn)行結(jié)果配置文檔如下:
中間件程序?qū)⑸傻脑u價結(jié)果文檔再次提交給評價系統(tǒng).評價系統(tǒng)讀取結(jié)果配置文檔信息,進(jìn)行處理.
基于以上案例解析,只要對相關(guān)屬性值進(jìn)行判定,即能對FLASH 文檔中各個對象進(jìn)行綜合評價.
屬性判定比較方法是評價過程中最常見的方法,F(xiàn)LA 文檔中,文檔屬性、場景屬性、時間軸屬性.幀屬性、對象屬性等都可以直接由JFSL 讀取,進(jìn)行直接比對來進(jìn)行評價.利用該方法可以實(shí)現(xiàn)絕大部分FLASH 文檔自動評價的功能.
正則表達(dá)式(regular expression)是一種可以用于模式匹配和替換的強(qiáng)有力工具,是由一系列普通字符和特殊字符組成能明確描述文本字符的文字匹配模式[3].正則表達(dá)式既可以用于進(jìn)行字符串格式測試,更多的被用于快速進(jìn)行文本替換功能.
FLASH 文檔圖層中的文本(Text)對象、幀腳本、對象腳本等都涉及純文本處理.由于文本、腳本等對象本身具有一定的靈活性,因此在對文本內(nèi)容進(jìn)行判定時,需要進(jìn)行一定的預(yù)處理,以提高文本識別的正確性.
中間件設(shè)計(jì)時,使用JSFL讀取相關(guān)文本屬性,在屬性寫入解析文檔前,使用正則表達(dá)式進(jìn)行文本過濾后再寫入解析文檔.需要解析的文本包括空格、回車符以及換行符.其中正則表達(dá)式中\r用于匹配回車符,\n用于匹配換行符,/g表示全局匹配,/i表示忽略大小寫.使用JSFL實(shí)現(xiàn)的代碼如下:
FLASH 對象中實(shí)例旋轉(zhuǎn)和縮放的評價方法較為復(fù)雜.因?yàn)樵贔LA 文檔中不能直接記錄文檔旋轉(zhuǎn)的角度以及縮放的比例.
在JSFL中有一個Matrix類,用于將FLASH 中對象坐標(biāo)空間的點(diǎn)映射到另一個坐標(biāo)空間,并可以對該對象執(zhí)行各種圖形轉(zhuǎn)換.matrix 對象被視為是一個3*3的矩陣:
其中,a、b、c、d參數(shù)可以通過Matrix類的方法獲取.
當(dāng)圖形對象以單位為x弧度進(jìn)行旋轉(zhuǎn)后,該矩陣變化為:
現(xiàn)有以下案例:在“main”場景“照片”圖層第90幀中插入關(guān)鍵幀,將該幀中的照片實(shí)例縮小為原來的70%并旋轉(zhuǎn)-20度.
首先通過JSFL獲取照片實(shí)例的Matrix屬性a、b、c、d的值,實(shí)現(xiàn)代碼如下:
中間件程序讀取解析結(jié)果文檔,根據(jù)獲取到的Matrix相關(guān)屬性進(jìn)行判斷.
由于案例中,需要縮放為原來的70%,并旋轉(zhuǎn)-20度.假設(shè)評價過程中允許有±10度的誤差.根據(jù)以上原則,判定表達(dá)式為:
sngX和sngY為變化后的實(shí)例對象寬和高,原始素材實(shí)例對象寬和高分別為652.7像素和437.9像素.實(shí)現(xiàn)該過程的代碼如下:
雖然該方法在一定程度上也存在一定的誤差,但通過該方法可以將評價誤差降低到最小,以此提高評價的正確性.
綜合使用上述基于JSFL的FLASH 自動評價中間件,在高中信息技術(shù)教學(xué)、浙江省高中信息技術(shù)會考、大學(xué)計(jì)算機(jī)基礎(chǔ)中都得到了充分的運(yùn)用,并獲得理想的效果.該技術(shù)不但減輕了教師的工作量,同時也提高評價的公平性和科學(xué)性,對教師教學(xué)和學(xué)生自主學(xué)習(xí)都帶來了很大的幫助.
[1]賈勇,孟權(quán)國.完全掌握Flash CS6白金手冊[M].北京:清華大學(xué)出版社,2013.
[2]隋秀龍.基于JSFL自動批改Flash操作題的研究及實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2005(5):78-79.
[3]高春艷.JavaScript入門經(jīng)典[M].北京:機(jī)械工業(yè)出版社,2013.
[4]隋秀龍.基于JSFL自動批改Flash操作題的研究及實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2015(5):77-79.