盛 磊
(杭州师范大学钱江学院,浙江 杭州310012)
随着多媒体技术的普及,多媒体教育技术已经成为各类高职高校的计算机基础教育课程.多媒体技术课程包括FLASH、PHOTOSHOP以及网页制作等内容.FLASH 在多媒体技术课程中占有重要地位,其表现形式丰富、文件体积小、运行平台广泛、兼容性强等特点,被广泛运用于网站、多媒体演示以及课堂教学中.
FLASH 课程教学与其他课程教学相比,包含更多的案例讲解和演示,学生需要花更多时间进行课程练习,才能将知识灵活运用.传统教学过程中,对于学生频繁的练习作品,通过手工方式进行批阅评价,不但需要花费大量的时间和精力,而且对学生评价标准也无法完全一致.特别针对多媒体类考试,没有一个公平公正的评价标准,一直是FLASH 多媒体教学的困惑.
FLASH 文档的主体文件FLA 文档包含Flash文档的媒体、时间轴和脚本基本信息的文件[1].运用计算机实现自动评价的关键在于对该文档进行全面的解析,通过分析给出相应得分点.FLASH 文档和其他文本文档不同,该类文档无法直接被第三方软件读取和分析,这给使用计算机评价带来一定的困难.
本文基于JSFL技术,提出一个FLASH 自动评价中间件实现方法,很好地解决目前FLASH 自动评价的瓶颈问题.
在FLASH 中包含有两种运行脚本类型.一种是AS(Action Script),用于SWF 文件在Flash Player环境中(即播放SWF 文件期间)执行动作的脚本;另一种是Flash JavaScript API,它基于文档对象模型(DOM),该模型允许使用JavaScript对象访问Flash(FLA)文档.用户可以编写和编辑Flash JavaScript(JSFL)文件,来解析Flash(FLA)文档,获取其中的文档属性、图层属性、帧属性、对象属性等等.计算机可以通过JSFL运行解析的结果,来评价学生作品的正确性.
基于JSFL技术的FLASH 自动评价有两种方法.一种方法是直接在JSFL 语言中给出评价结果,使用该方法从一定程度上更快的给出评价结果,但需要给每一个不同的FLASH 作品评分标准编写不同的JSFL脚本,没有通用性[2].另一种方法是编写统一的JSFL 脚本,对文档进行全面的解析,在中间件程序中,对每个知识点进行判定并给出评价结果,使用该方法可以减轻频繁编写JSFL 的压力,在中间件程序中,编写不同题型的评判标准,对于程序设计来说更加方便.本文采取第二种方法,使用Visual Basic 6.0设计并实现了FLASH 自动评价中间件技术.
FLASH 自动评价中间件需要配合评价系统软件运行.由评价系统软件提供学生作品的基本配置(.ini)文档,改文档包括FLA 源文件路径、评价题号等信息,由中间件程序运行后给出每个点的得分情况、详细评价结果以及总分信息的配置(.ini)文档,供评价系统进行进一步处理.
FLASH 自动评价中间件实现的基本思路是根据评价系统给出的作品配置信息,调用JFSL脚本对学生FLA 文档进行解析,生成解析(ini格式)文档,交还给中间件,由中间件程序根据作品题号,将解析结果与正确结果进行匹配,给出具体得分以及评价结果,生成评价结果配置文档,交由评价系统进行处理.该思路的基本流程如图1所示.
图1 中间件实现流程图Fig.1 The middleware implementation flow chart
根据中间件实现思路和流程,设计并实现基于JSFL技术的FLASH 自动评价中间件.该中间件程序由评价系统来进行调用执行.现有以下案例.
表1 案例题目和评分标准Tab.1 Subject case and scoring criteria
需要实现以上FLASH 作品自动评价主要实现过程如下.
3.2.1 读取作品配置信息
学生作品配置信息由评价系统提供,相关配置文档如下:
由中间件程序读取相关配置信息.学生作品在配置选项TestDir目录中,以指定名称flash.fla保存.
中间件实现关键代码如下:
其中ReadIniFile函数是用于读取INI配置文档的操作函数.读取FLASH 作品的题号和答题目录信息.
3.2.2 JSFL文件解析过程
中间件程序读取FLASH 作品基本信息后,调用FLASH 主程序运行JSFL脚本,对FLA 文档进行解析.该解析过程包括Document对象的属性、笔触对象属性、库对象属性、滤镜对象属性、图层属性、帧属性、帧中实例及对象属性、场景信息属性等信息.
JSFL脚本是中间件实现的重要环节.利用该脚本读取FLA 文档的属性信息,并保存到解析文档中.
JSFL脚本执行主体如下:
其中,ExportFlash()是该脚本中的重要函数,用于解析FLA 各种对象属性.以案例为例:
1)获取图层属性的关键代码
其中WriteFlashProperty Value方法用于将获取到的属性,写入到解析文档中.JSFL中图层对象以数组形式存放,其中的sound Name属性和soundSync属性分别用来获取图层声音和同步方式的属性.
2)获取图层中对象Alpha属性的关键代码
其中,JSFL中实例对象的color AlphaPercent属性用来获取Alpha百分比值.
3)获取帧对象中动画类型属性的关键代码
JSFL中帧对象以数组形式存放,tween Type属性用于读取帧动画类型.如果是动画补间则返回“motion”,形状补间则返回“shape”.
4)获取帧脚本的关键代码
JSFL中图层对象的actionScript 属性用于获取该图层的脚本代码.
FLA 文档解析完成后,将生成解析结果文档.
3.2.3 中间件程序评价过程
中间件程序获得解析结果文档,对解析结果进行进一步分析.以案例为例:
1)图层中声音属性评价关键代码
其中,cfp类中的Get Property方法用于读取解析文档中参数值.WriteIniFile方法用于将错误信息输出到结果文档中.
2)图层同步方式评价关键代码
其中,如果同步方式是数据流,则返回“stream”.通过对返回字符串判断,评价最终结果.
3)图层颜色属性评价关键代码
由于数组下标从0开始编号,获取第41帧属性,在frame数组下标为40的位置中.
4)帧对象动画类型评价关键代码
如果该帧动画类型返回值为“motion”,则表示作品在该帧被设置为动作补间.
5)帧脚本评价关键代码
通过instr方法,对脚本进行文本比对,判定是否包含指定脚本.
6)评价结果保存到文档
3.2.4 评价结果展示
评价结果以INI配置文档形式保存,基于以上案例,运行结果配置文档如下:
中间件程序将生成的评价结果文档再次提交给评价系统.评价系统读取结果配置文档信息,进行处理.
基于以上案例解析,只要对相关属性值进行判定,即能对FLASH 文档中各个对象进行综合评价.
属性判定比较方法是评价过程中最常见的方法,FLA 文档中,文档属性、场景属性、时间轴属性.帧属性、对象属性等都可以直接由JFSL 读取,进行直接比对来进行评价.利用该方法可以实现绝大部分FLASH 文档自动评价的功能.
正则表达式(regular expression)是一种可以用于模式匹配和替换的强有力工具,是由一系列普通字符和特殊字符组成能明确描述文本字符的文字匹配模式[3].正则表达式既可以用于进行字符串格式测试,更多的被用于快速进行文本替换功能.
FLASH 文档图层中的文本(Text)对象、帧脚本、对象脚本等都涉及纯文本处理.由于文本、脚本等对象本身具有一定的灵活性,因此在对文本内容进行判定时,需要进行一定的预处理,以提高文本识别的正确性.
中间件设计时,使用JSFL读取相关文本属性,在属性写入解析文档前,使用正则表达式进行文本过滤后再写入解析文档.需要解析的文本包括空格、回车符以及换行符.其中正则表达式中\r用于匹配回车符,\n用于匹配换行符,/g表示全局匹配,/i表示忽略大小写.使用JSFL实现的代码如下:
FLASH 对象中实例旋转和缩放的评价方法较为复杂.因为在FLA 文档中不能直接记录文档旋转的角度以及缩放的比例.
在JSFL中有一个Matrix类,用于将FLASH 中对象坐标空间的点映射到另一个坐标空间,并可以对该对象执行各种图形转换.matrix 对象被视为是一个3*3的矩阵:
其中,a、b、c、d参数可以通过Matrix类的方法获取.
当图形对象以单位为x弧度进行旋转后,该矩阵变化为:
现有以下案例:在“main”场景“照片”图层第90帧中插入关键帧,将该帧中的照片实例缩小为原来的70%并旋转-20度.
首先通过JSFL获取照片实例的Matrix属性a、b、c、d的值,实现代码如下:
中间件程序读取解析结果文档,根据获取到的Matrix相关属性进行判断.
由于案例中,需要缩放为原来的70%,并旋转-20度.假设评价过程中允许有±10度的误差.根据以上原则,判定表达式为:
sngX和sngY为变化后的实例对象宽和高,原始素材实例对象宽和高分别为652.7像素和437.9像素.实现该过程的代码如下:
虽然该方法在一定程度上也存在一定的误差,但通过该方法可以将评价误差降低到最小,以此提高评价的正确性.
综合使用上述基于JSFL的FLASH 自动评价中间件,在高中信息技术教学、浙江省高中信息技术会考、大学计算机基础中都得到了充分的运用,并获得理想的效果.该技术不但减轻了教师的工作量,同时也提高评价的公平性和科学性,对教师教学和学生自主学习都带来了很大的帮助.
[1]贾勇,孟权国.完全掌握Flash CS6白金手册[M].北京:清华大学出版社,2013.
[2]隋秀龙.基于JSFL自动批改Flash操作题的研究及实现[J].电脑编程技巧与维护,2005(5):78-79.
[3]高春艳.JavaScript入门经典[M].北京:机械工业出版社,2013.
[4]隋秀龙.基于JSFL自动批改Flash操作题的研究及实现[J].电脑编程技巧与维护,2015(5):77-79.