第一文秘网    > 笔试题目

用Flash实现物理课件的“积件”式开发

作者:jnscsh   时间:2022-03-27 08:46:33   浏览次数:

在我国,课件的开发速度远远跟不上教学的需求,原因在于课件开发效率极低,主要表现为重复开发,没有积累。积件的重复利用特性可以降低我国课件开发总成本,是提高开发效率的有效手段。

笔者认为,如果能使得制作课件的时间缩小为半个小时至一小时(接近于PPT课件制作),积件化课件制作将会得到普及,并成为主流。

一、物理积件的特点

如果把物理课件的组成模块看作一级积件的话,图表、信息、例题、资料、练习并非物理积件所独有,应属于通用积件,因此,实际意义上的积件主要是指物理实验部分。

物理是典型的实验科学,很多教师认为模拟实验现象不如让学生亲自动手做。这种观点有一定道理,但不应该就此抹煞实验模拟类积件,此类积件具有安全、可重复操作、演示效率高和可对比观察等优点。因此实验模拟积件与真实实验应共同存在,两者起到相辅相成的作用。

物理模拟现实比较复杂,要开发一个好的物理积件库,必须要构建不可视对象的积件。例如力是不可视对象,它只有作用于物体才能够表现出来。

二、物理积件库的三层构想及开发实践

1.物理积件库的三层构想

按照笔者构想,每一个积件库可以分为三个层级。分别为素材层面的整合类积件库;具有属性方法对象层面的积件库;以侦听和注册等手段来组织,以“自动交互”为目的的积件库。每一层级都以上一层级为基础构建,逐步增加开发难度与功能。

第一层级很容易构建,绘制或者征集整套的物理仪器图库,如全套电学仪器图库、光学仪器图库、理学仪器图库,其中包括简单的动画即可。

第二层级较为复杂,它为所有仪器元件增加电阻、电功率、额定电压,为组件的运转制作动画(如电机转动动画、灯点亮动画等);为各种仪器元件增加类似“通电(电压)”方法,如灯泡的通电方法需要接受一个电压参数,灯泡会根据电压决定亮度。这些属性和方法不一定都用到,但是完成后,第三层级的积件就有了建立的基础。

第三层级在第二层级的基础上进行开发,两者的区别在于,如果使用第二层级的积件制作课件,需要由使用者进行逻辑判断(如电路是否需要连通),使用第三层级进行制作,系统会自动判断电路是否连通。

2.物理积件库的具体开发

使用Flash软件进行课件的积件式开发是当前的积件式开发的一个重要分支,它有望成为主流。

物理积件库可以分为四个库,按照开发规模大小依次为:力与运动、电学、光学、机械波。光学部分内容少而且独立,本文篇幅所限,所以在此仅讨论电学、力与运动。

(1)电学部分开发

第一层级积件库建设:只要整理一套风格统一的可视仪器库便可形成(如下图)。

第二层级积件库建设:要给各种仪器元件增加各种属性(如电阻,额定电压);此外,要根据不同仪器,增加不同“加压”连通函数。连通函数可以传递“电压”参数,如小灯泡的连通是这样的,灯泡.加压(“电压数”)。一个滑动变阻器调节灯亮度的核心代码为:

灯泡.omEnterFrame=function(){

if(开关.连通){

灯泡.加压(灯泡.电阻*(电池.电压/(电池.电阻+变压器.电阻+灯泡.电阻)));

}

Else{

灯泡.断开();

}

}

此代码的作用是根据各个仪器元件的属性决定灯泡亮度。电路之间的逻辑关系是由编程来体现,不是根据电路连接自动作出判断的。

第三层级积件库建设:它比第二层级的积件使用少了编程与逻辑过程,但这又对积件开发提出了更高的编程要求。鉴于实现此模式有几种不同的架构,笔者推荐以基于导线和触点的电路连接为架构。落实到技术上,即为每一个仪器元件增加触点,导线必须连接到触点才算连接完成,系统根据导线的连接方式计算电路的电压电流、最终决定电器以及整个电路的状态,此方案设计的好处是允许多触点仪器的存在(如滑动变阻器和许多测试仪器入电流表就有多个触点,另外它还具有仿真实验室的效果,甚至还可以使用简单元件来实现复杂仪器的组装)。

(2)力与运动学部分开发

力与运动学部分包括微观热学、电磁力学部分、功与机械能部分、机械运动、碰撞等,它是物理学科最大的一部分内容。物理现象通常是通过物体运动表现的,这种运动又是不可视的,因此第一层级的力学部分积件库涉及不到力和运动,通常仅仅绘制一些常见的物理仪器。第二层级就要构建运动类,Flash自带Tween类就能解决开发运动类所需的基本功能,对于使用者来说,掌握运动类的方法和属性会有一些难度,如下例的代码是控制一个小球跳动,直到能量损失完停止。

#include "lmc_tween.as"

$tweenManager.broadcastEvents = true;

小球.弹起 = true;

小球.高度 = 200;

衰减系数 = 0.2;

跳跃时间 = 1;

小球.onPress = function() {

小球.tween("_y", 小球._y+小球.高度, 跳跃时间, "easeInQuad");

};

小球.onTweenEnd = function() {

if (小球.弹起) {

小球.tween("_y", 小球._y-小球.高度, 跳跃时间, "easeOutQuad");

} else {

小球.tween("_y", 小球._y+小球.高度, 跳跃时间, "easeInQuad");

小球.高度 = 小球.高度*(1-衰减系数);

跳跃时间 = 跳跃时间*(1-衰减系数);

}

小球.弹起 = !小球.弹起;

};

小球.addListener(小球);

第三层级因为减少编程量,使用的优势凸显。笔者建议,开发者应多下工夫直接开发第三层级积件库。

其构想是:跳过运动类开发,直接开发力类,物体的运动完全由力控制,由力来决定物体的运动形态,以便减少运动类的开发工作量。以下代码是一个假想的复杂模拟实例:在一个悬挂在点电荷电场中的小球保持静止,细绳偏转一定角度。按下按钮,绳子断掉后,小球在重力和电荷力的合力下向电荷运动。可以随时按照相按钮拍下小球的位置。

重力=New 力(“重力”);

电场力=New 力(“电场力”,电荷);

弹力=New 力(“弹力”,细绳);

小球相机= New 相机(“小球”);

弹力.添加(小球);

重力.添加(小球);

电磁力.添加(小球);

按钮.onPress=function(){

弹力.取消(小球);

//相机.照相();//或者在这里启动一下相机:

}

照相按钮.onPress=function(){

相机.照相();

}

弹力根据小球的质量,带电量自动计算受到力的大小,决定细绳偏转角度。绳子断裂后,系统自动根据受力决定小球的运动轨迹(并不一定是直线)。

三、怎样组织人员建设物理积件库

物理积件库开发复杂度高,开发人员需要既有教学经验,又有编程能力。然而这样的人才少之又少,所以人员的组织有两个方向:一是挑选程序员,配以教师交流。二是挑选老师,培训编程。前者的优势在于产品开发快,技术比较专业;可一旦失去资金支持,资源库的更新和维护就跟不上。后者问题是开发周期长,前期不够规范;优势在开发后期,经过培训的这些老师自己可以更新和维护。

最理想的人员组织形式为前期专业人员开发,同期教师培训。对不以营利为最终目的的开源项目来说,培训应该和开发同步进行。如采取结对编程进行开发,再同步予以培训,虽然进度会慢一些,但是能够培养出技术骨干,方便后期推广和维护。

(作者单位:山东天鸿书业多媒体开发中心)

推荐访问:课件 物理 开发 Flash