用Flash模拟“平均速度逼近瞬时速度”的过程
2010-09-05王洪根
王洪根
江苏省大丰高级中学 江苏大丰 224100
用Flash模拟“平均速度逼近瞬时速度”的过程
王洪根
江苏省大丰高级中学 江苏大丰 224100
本文简要介绍了用Flash模拟“平均速度逼近瞬时速度”过程的设计思路及程序设计中的核心语句。
Flash 平均速度 瞬时速度 逼近 模拟
在中学物理教学中,有关平均速度与瞬时速度之间关系的认识和理解一直是学生认知上的一个难点。究其原因是由于学生日常生活中缺少这方面的认识和体验,而在中学阶段用实验来直观演示“平均速度逼近瞬时速度”的过程目前还比较困难。对传统教育方式、教育媒体来说,教师即使想采用建构主义的学习方法也无能为力。实际教学中我们利用Flash MX 2004制作了“平均速度逼近瞬时速度过程模拟”教学软件(界面如图所示),在模拟环境中,让学生“感受”了物体平均速度逐步向瞬时速度逼近的过程,从而帮助学生很快在头脑中构建了两者的关系,收到了良好的效果。下面简要介绍软件的制作思路和核心语句。
一、制作思路
在Flash MX 2004场景中主要设置下列元件:影片剪辑wt、zgb,wt为运动物体,zgb为遮光板内嵌在影片剪辑wt中,两者右边沿对齐放置,注册点均设置在各自的最右端;按钮tj、kz、tt,tj用于调节遮光板的宽度,kz用于控制物体的运动和复位,tt为记录时间用的探头。此外场景中还应再建立几个文本框分别用于记录、显示遮光板实时宽度、遮光板通过探头所用时间以及由此计算得到的平均速度大小。
模拟时,通过按钮让物体开始运动(软件中设计物体做匀加速直线运动),当遮光板前沿通过探头时刻开始计时,后沿通过探头时刻结束计时。这样由记录到的时间差及先前调节遮光板宽度时测出的遮光板宽度值并可以计算出本次遮光板通过探头过程中的平均速度。让物体回复原位,不断改变(减小)遮光板宽度,重复上述过程,并可以得到遮光板越来越窄、通过探头时间越来越短情况下各次的平均速度值……经此对比即可发现当时间间隔趋于零时,平均速度趋于一个稳定值——瞬时速度,最终建立瞬时速度概念,从而理解平均速度与瞬时速度之间关系。
二、核心功能语法实现
软件设计的关键是获取物体开始运动后,遮光板何时通过探头及遮光板前后沿通过探头的两个时刻值。为达此目的,使用了onEnterFrame函数——一个以影片剪辑帧频不断触发的事件处理函数来实现。具体语句及注释如下:
this.onEnterFrame = function() {
//以SWF 文件的帧频重复调用
if ((wt._x+-tt_x>=0) and (wt._x-zgb._width-tt_ x<=0)) {
//遮光板通过探头期间
x = wt._x-tt_x;
//越过探头的遮光板部分宽度,wt._x、tt_x分别为物体及探头位置横坐标
t1 = Math.sqrt(2*(tt._x-wt_x0)/a);
// wt_x0为wt初始位置横坐标,a为运动加速度
t2 = Math.sqrt(2*(wt._x-wt_x0)/a);
t = t2-t1;
v = x/t;
delete this.onEnterFrame;
//执行完毕后,删除this.onEnterFrame,以释放内存和CPU占有率
}
};
//
wt.onEnterFrame = function() {
//以SWF 文件的帧频重复调用
with (this._parent) {
i = i+1/ftp_swf;
//i以1/ ftp_swf步长进行累加,ftp_ sw为SWF文件的帧频
wt._x = wt_x0+0.5*a*i*i;
// wt以加速度a做匀加速直线运动
if (wt._x>=800) {
wt._x = 800;
delete wt.onEnterFrame;
}
}
};
以上onEnterFrame函数被巧妙使用了两次,前者用于检测遮光板通过探头的过程,后者是让物体(包括遮光板)在场景范围内形成匀变速直线运动。在Flash课件制作中如能合理使用onEnterFrame函数,则不仅方便而且将大大提高编程及运行效率。
book=79,ebook=28