1 引言 在flash教学中,有时需要对学生的媒体创作做一些量化 的统计,以检验学生的学习程度。在这个过程中,需要设定一 磐知识点(比如对Flash作品中淡入淡出效果的检测),然后学 生根据这些知识点完成对作品的创作并提交。对于学生提交上 来的大量作品(fla文件),检验手段成了一个困难的问题。如 果依靠教师的手工批阅,这将是一件十分繁重的任务,所以自 动分析fla文件成了一个非常迫切的要求。虽然Macromedia公 司不提供fla文件格式说明,但提供Flash JavaScript APl支持, 使得可以从另外一个角度去分析fla文件。 2 Flash JavaScript API 根据nash提供的帮助文档,可以知道:Flash Javascript API即nash Javascript应用程序编程接口,是一个辅助编程工 具。该工具可用来创建在创作环境中运行的脚本。同时,作为 扩展Flash的主要部分,Flash JavaScript API提供了在F/ash创 作环境中(即用户保持Flash程序打开期间)执行多个动作的 脚本的功能,这有助于简化创作过程。这意味着,既可以利用 其来创作E1.够h动画,也可以利用其来读取fla文件中各种对 的属性。 3 Flash文档对象模型(DOM) 要做到这一点,还需要了解一下Flash文档对象模型 fDOM).因为n聃h JavaScript API基于文档对象模型(DOM), 该模型允许使用JavaScript对象访问Flash文档(即fla文档)。 在nash帮助文档中,提供了对于DOM结构包括各个对 象的方法和属性的详细描述。但根据实际情况,一般只需了解 其中主要的对象和属性。 图l中描述了对有用的简化的Flash文档对象模型。 ![]() 用于flash JavaScript AFI的flash文档对象模型(DOM) 包含一组顶级函数和两个顶级对象(FLfile对象和Flash对象 (Ⅱ))。一切就从这两个顶级对象开始。 (1)启动flash8,选择新建“Flash JavaScript文件”命令, 在编辑器中输入以下代码: var strlis:new Array();定义(字符串)数组 var timeLines=new Array(); f1.openDocument(‘file:///C:/check.fIa"}://打开被检文件 vardoc:fl.getDocumentDOM0;得到文档对象模型接口 timeLines=doc.timelines;得到Flash时间轴(场景)。 。。。 ;trIiS.Dush(doc.height); 得到文档宽度、高度、背景色、帧率、 ,/场景数,并追加到strlis数组中 strlis.push(doc.width); strlis.push(doc.backgroundColor); strlis.push(doc.frameRate); strlis.push(timeLines.length); FLfile write(file:///C:/fltest tXt".strtis);,/将strlis数组的值写入 .//fltest.txt //关闭被检文件 .closeDocument("file:l//C:lcheck-fla',false);,,天即傲伍x‘阡 (2)将文件保存,如“test.jsfl”。将待检测的fla文件复制到c盘,并命名为”check.fla“的一些文件属性的截图。 (3)双击“test.jsfl”文件运行。这时会自动肩动Fish (如果Flash没有肩动).并执行jsn中Flash Java.Script代码, 将结果写人“c:LOtest ixt”文件。 (4)打开fltest.txt,观察得到的执行结果(各属性值以“,” 分隔).如图3所示。 ![]() 通过上面的例子,可以初步了解Rash JavaScript运行机制 以及如何输出结果至外部文件。 5外部程序调用Flash JavaScript(jsfl) 在实际应用中.需要南自己的应用程序去调用Flash JavaScfipt代码。不过需要指出的是,外部应用程序必须通过 Flash来达到这个目的(机器上必须安装有nd·Mx及以上完 整版)。实现此目的的方法很简单,即可以利用sheⅡExecute函 数。以Delphi为例,调用代码如下: ShellExecute lApplication Handle,"open’,’flash.exe’,’c:\test js矿nmSW—SHOW); 综上所述.应用原理如图4所示 ![]() 6应用举例(解析fIa文件) 6.1(Delphi7.0)应用程序界面和运行结果 ![]()
|