李博 齊耀龍


摘要:目前高校及各級教育機構在各科上都在進行題庫建設及自動評分的嘗試,很多專業已經成形了。但是在多媒體教學中,由于設計聲音、圖片、動畫、視頻等各種主觀性很強的對象,對于自動評分形成了難題。基于多年的高校實際教學經驗,在flash動畫的隨機組卷和自動評分方面給出了具體的實現。
關鍵詞:Flash動畫;JSFL;自動評分;題庫;組卷
中圖分類號:TP311.1 文獻標識碼:A
文章編號:1009-3044(2020)21-0183-02
開放科學(資源服務)標識碼(OSID):
1 引言
在各個學科的測試和考試中,為了追求公開公平公正的原則,各級教育機構都努力對試卷進行隨機組卷和自動評分的嘗試。在高校教育中的多媒體課程包括例如聲音、圖片處理、視頻剪輯和flash動畫制作等主觀性隨意性很強的題目,在以上工作中造成了很大的困難。往常的主觀題目都是教師人工評分,因為學生人數過多,工作量非常大,如果再強調每人一套題,再進行人工評分就不太現實了。
2 理論基礎
Flash是由Adobe公司推出的交互式矢量圖和Web動畫設計軟件。在實現動畫的同時,系統內置了ActionScript語言,而且支持JSFL。JSFL指Flash JavaScript,是JavaScript腳本文件,一個輔助編程工具,可用來創建在Flash創作環境中運行的腳本。對應不同的flash對象和動畫方法,jsfl都有相應的類。也就是說動畫本身有相應的語言代碼可以調用,這樣給用程序瀏覽動畫形成了可能。
3 具體實施
我們利用JSFL可以瀏覽fla文件中的所有對象這一特性設計了相關系統,對簡單的操作題能夠實現和客觀題一樣的自動評分。
首先,把Flash的知識點進行分類,加入難度系數。
然后把所有的操作題按知識點細分得出該題的難度值和對應章節。
最后再組卷時考慮章節覆蓋和難度對應(見圖1、圖2)。
評分部分,利用flash自己的庫函數,編寫jsfl文件。常用的類有(見表1):
4 評分過程
為了更好地評分,題目中規定了比較具體的動畫幀數,做動畫的元件以及動畫所在層的名字,一般是提供一個已經命名好的fla文件,在場景中有已經命名好的層,在庫中有命名好的元件。
評分的大致過程如下:
4.1遍 歷所有學生的文件夾
相應代碼:
var sources= FUile.listFolder( folderPath,”directories”);
4.2 遍歷當前文件夾的所有fla文件
相應代碼:
var sources2=FLfile. listFolder(sources[0]+”/flash/*. fla”,”files”1:
4.3 打開fla文件,找到相應的層,遍歷所有的幀
相應代碼:
var fa=fl.getDocumentD OM O.getTimelineO.layers[Ol.frames;
4.4 根據關鍵幀的動畫類型,幀的起始位置,動畫總幀數來判斷是否滿足條件。
4.4.1 補間形狀(tweenType=”shape”)
判斷起始終止關鍵幀形狀是否正確,補間是否正確。判斷對象的elementType是否為shape,矢量圖的x,y屬性
4.4.2 傳統補間(tweenType=”motion”)
1移動判斷元件的x,y屬性
1縮放判斷元件的scaleX,scaleY屬性或width,height屬性
1旋轉判斷關鍵幀的rotateDirection值
1緩動判斷關鍵幀的SimpleEase值
1淡人淡出判斷元件的colorAlphaPercent屬性
1遮罩動畫先判斷遮罩是否正確,兩個層的類型是否為mask和masked;然后看動畫是否正確。
1引導動畫先判斷引導是否正確,兩個層的類型是否為guide和guideed;然后看動畫是否正確。
4.4.3 補間動畫(tweenType=”motion object”)
判斷相應的幀的xml中的相應的屬性是否正確。傳統補間的大部分動畫都有相應的屬性可以判斷,例如移動是Motion_x,Motion_y,Motion_z屬性,其他屬性類似不再贅述。
當然評分軟件的編寫最大的困難不是各種類的使用,而是糾錯,學生的答題結果千奇百怪,各種莫名的結果都要考慮到,經過幾年的運行和不斷地改進,該系統經受了殘酷的考驗,基本達到了要求。
5 評分時的糾錯
因為評分時是很多人的文件放在一起評的,一個一個遍歷,速度比較慢,當評分程序出現錯誤的時候運行就會中斷,就需要重新配置環境,重新運行,造成效率低下。所以程序的糾錯是必要的,最好是能把出現的錯誤提前預料到,提前做出應對,節約時間和精力。
但是學生的腦洞大開,出現的錯誤防不勝防,我們把近年來評分時遇到的錯誤一一列舉,以供其他有此需求的教師參考。
5.1 一定要確定關鍵幀的動畫類型
3種補間方式再加上沒有補間的None類型,一共會出現4種tweenType,題目肯定只會考一種補間方式,但是不要想當然,學生會對同一道題目做出所有類型的動畫,當然包括錯誤的。所以在找到起始關鍵幀后一定要判斷動畫類型是否正確,否則在后面取相關對象的時候就會出錯。
5.2 一定要確定關鍵幀上的對象的數量
對于一些簡單的動畫,fla文件中只提供了一個元件,也只有一個層,按說只需要判斷元件的動畫是否滿足要求就行了,但是學生會在補間的關鍵幀上放一堆對象或者什么都沒有,這時如果直接判斷對象的動畫就會出錯。
5.3 一定要確定關鍵幀上的對象類型
對于形狀補間,因為不是元件,只是矢量圖,不能對具體的錨點位置評分,只能看是否在關鍵幀有形狀補間,并且對象是提供的矢量圖。但是學生會在補間完成后把矢量圖轉換成元件,或者干脆換成沒提供的圖形,或者刪掉。所以如果不知道對象類型去遍歷就會出錯。
5.4 一定要確定層的順序
有的題目多個層的順序是已經給定的,但是學生會自己打亂,而且會改名,另外像引導動畫和遮罩動畫層的順序是必需的。所以一定要確定先判斷層的順序再去遍歷層。
5.5 評引導動畫時,一定要確定對象是否在引導線上
引導動畫不光需要判斷疊放次序,還要判斷被引導對象是否在引導線上,因為學生會在被引導層的關鍵幀上放置多個對象或者沒有對象,或者對象沒有對齊引導線。
5.6 評引導動畫時,一定要判斷引導層沒有補間,而且不是元件
因為引導層一定要保持矢量圖的散點狀態,才能有引導作用。
5.7 評最新的補間動畫時,因為要用到動畫的xml文本,一定要確定是否能生成xml文本
補間動畫的屬相非常多,評分時要把動畫轉換為xml文本來搜索相應的屬性。但是學生會在補間后對幀上的元件進行隨意增刪,破壞了補間,根本就不能生成xml文本,何談搜索。
以上只是列舉了近幾年出現的典型錯誤,其實真正的答題環境可以稱得上“百花齊放”,對相應的程序設計提出了高要求。
6 展望
現在的組卷和評分系統已經運行了幾年了,也經受了許多考驗,但還是有可以提高的部分。因為動畫過于靈活,而且當層數很多時,自動評分系統往往耗時較長,容錯率也有所下降。以后在出題環節就要考慮這個問題,盡量把題目的靈活性控制的低一些。JSFL本身的擴展能力糾錯能力一般,可以嘗試在JSFL外,用其他語言調用函數,充分發揮各自的優勢。
參考文獻:
[1]隋秀龍.基于JSFL自動批改Flash操作題的研究及實現[J].電腦編程技巧與維護,2015(5):77-79.
[2]王德東,楊永華,盧暢.基于JSFL的Flash自動測評系統研究[Jl.浙江海洋學院學報(自然科學版),2010,29(1):89-94,98.
[3]苗永利,基于內容及圖像分析的信息技術自動閱卷系統[D].山西省太原市:太原理工大學,2016.
【通聯編輯:王力】
基金項目:河北大學工商學院第二批課程建設項目(2019KCJS38);河北大學第二批“課程思政改革試點課程”建設項目(KCSZ-02-117)
作者簡介:李博(1973-),男,河北保定人,講師,碩士,主要研究方向為計算機軟件設計、人工智能等。