标题 | 用Flash交互动画演示力的动态平衡过程 |
范文 | 卞龙宝 王洪根 摘要:本文简要介绍了通过Flash交互动画演示力的动态平衡过程的意义和方法。 关键词:Flash;动画;动态平衡;过程 中图分类号:G633.7 文献标识码:A文章编号:1003-6148(2009)11(S)-0055-2 高中物理教学中常用图解法来分析、解决力的动态平衡问题,其基本思路是选择物体处在动态变化过程中的几个不同典型位置,依据平衡条件采用同一标度作出物体受力图并叠加在一起,然后据图比较确定动态平衡过程中各力的变化情况及变化趋势。图解法解决力的动态平衡问题具有形象、直观的特点。然而,不难看出图解法中所谓的“过程”是通过几个分立、间断的平衡状态来构成的,并不具有连续性。因此,图解法并不能让学生真正“见证”完整连续的力的动态平衡过程及具体细节。实际教学中,笔者利用Flash MX 2004制作“力的动态平衡过程动画演示”教学软件(界面如图1所示),发挥编程优势通过交互动画实时演示,化静为动,变间断为连续,让学生"观察"到了力的动态平衡完整变化过程及具体细节,辅助力的动态平衡问题教学,收到了良好的效果。下面以图1中实例为例简要介绍软件的制作思路以及核心功能语法的实现。 1 制作思路 图1中实例原题为:如图用一档板将小球夹在档板和光滑斜面之间,若缓慢转动挡板,使其逆时针转至水平,试确定此过程中球对挡板的压力及球对斜面压力的变化情况。 可以分析,因动态平衡过程中涉及挡板的转动及球的移动,在软件场景中应将球及挡板设置成独立的影片剪辑。因物体所受各力(重力、斜面支持力、挡板弹力)及合力在动态平衡过程中存在变化,表示这些力的图示也应设置成单独的影片剪辑。另因物体所受各力是作用在物体上的,所以这些影片剪辑必需内嵌在物体影片剪辑之中。此外,动画中还应有一个能交互改变角度参量的按钮(或拖动条),见图1下方。 2 核心功能语法实现 软件设计的关键是构建两函数:一是作图函数,二是刷新函数。前者的功能是确定球体位置及画受力图,后者的作用是在进行交互操作时对作图函数实现同步更新。 在本例中,由物体间几何关系及力的平行四边形法则可构建如下作图函数: function zt(θ) { radians = θ*Math.PI/180;//将弧度换成角度,θ为挡板与斜面夹角(角度),是本过程中的控制变量 bo = (radius/2)/Math.sin(radians/2); //计算bo间距离,radius为球半径 od = w*Math.sin(5*Math.PI/6-radians)/Math.sin(radians); oe = w*Math.sin(Math.PI/6)/Math.sin(radians); //依据正弦定理计算两分力大小,w为球自身重力大小 b._rotation = -1*θ-30; //设置挡板(b)转动后角度值,30是斜面倾角 with (qiu) { _x = b._x0+bo*Math.cos(radians/2+Math.PI/6); _y = b._y0-bo*Math.sin(radians/2+Math.PI/6); //计算并设置球的位置,b._x0、 b._y0为b点横、纵坐标值 fod._rotation = -30; foe._rotation = -1*θ+150; //设置两分力转动后角度值 fod._yscale = od; foe._yscale = oe; //设置两分力垂直缩放比例,同比对应力大小 } x1 = b._x0+bo*Math.cos(radians/2+Math.PI/6); y1 = b._y0-bo*Math.sin(radians/2+Math.PI/6)-w; //获取点A坐标 x2 = b._x0+bo*Math.cos(radians/2+Math.PI/6)-od*Math.sin(Math.PI/6); y2 = b._y0-bo*Math.sin(radians/2+Math.PI/6)-od*Math.cos(Math.PI/6); //获取点D坐标 x3 = b._x0+bo*Math.cos(radians/2+Math.PI/6)-oe*Math.sin(-radians-Math.PI/6); y3 = b._y0-bo*Math.sin(radians/2+Math.PI/6)+oe*Math.cos(-radians-Math.PI/6); //获取点E坐标 drawLine(x1, y1, x2, y2, 1); drawLine(x1, y1, x3, y3, 2); //借助drawLine ( )函数在AD及AE间画连接虚线 } 对作图函数的刷新是通过以影片剪辑帧频不断触发的事件处理函数onEnterFrame来实现的。交互按钮的语句具体如下: on (Press) { pressed = true startDrag("",true ,left ,top ,right , top ) this.onEnterFrame = function() { //执行onEnterFrame事件处理函数 if (pressed) { varθ= (this._x-left)/( right - left)*105+45; zt(θ) // 获取θ并执行zt(θ),45为θ初始值 } } on (Release) { pressed = false stopDrag() delete this.onEnterFrame //删除onEnterFrame,释放内存和CPU占有率 } 在中学物理教学中,凡是具有定量关系的变化规律,都可以将其中一变量设置成控制变量,采用上面的模式通过交互动画来形象、直观地演示相应规律随控制变量变化的完整动态变化过程及具体细节。 (栏目编辑王柏庐) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。