例谈利用PowerPoint中的VBA制作交互式物理课件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例谈利用PowerPoint中的VBA制作交互式物理课件
作者:陈夏玲闫小军
来源:《中国信息技术教育》2013年第01期
摘要:针对PowerPoint的强大功能,本文结合课件《简谐运动》的制作过程,归纳了利用PowerPoint中的VBA制作交互式物理课件的基本策略、动画实现方法与技巧。
关键词:PowerPoint;VBA;物理课件;交互性
PowerPoint课件由于制作方便、快捷,深受大家喜爱。
但绝大多数由PowerPoint制作的课件交互功能差、动画简单、形式呆板,成了名副其实的幻灯片,尤其是交互性强的动画模拟课件很少见到。
因此,许多人错误地认为PowerPoint只是制作幻灯片的简单工具,功能有限,不可能制作出交互性很强的课件。
通过反复地思考和摸索,我们发现可以利用PowerPoint中的VBA制作出交互性很强、动感十足且符合物理运动规律的课件,下面就粗略介绍一下《简谐运动》课件的制作方法及关键技术。
● 课件制作的原理和实现的功能
1.弹簧振子做简谐运动动画的实现
弹簧振子的振动过程也就是小球的运动过程。
设定一个时间间隔,只要计算出每个时间间隔后小球圆心的位置,也就知道了小球的运动轨迹。
我们可以把实际问题转化为运用循环结构和简谐运动规律来计算圆心运动轨迹的过程。
具体算法如下:简谐运动中弹簧振子离开平衡位置的位移x随时间t变化的函数表达式为:,弹簧振子的速度v随时间t变化的关系为:,弹簧振子的加速度a随时间t变化的关系为:,其中A为振幅,为角速度,即,T是振动周期,是初相位。
假设振子运动的角速度ω=1,初相位=0,简谐运动的函数表达式简化为:,。
运动时间t初值为0,输入振幅A,计算出弹簧振子的位移x、速度v和加速度a,累加小球运动的时间t=t+0.1,直到t大于所设定的时间结束。
2.课件实现的功能
点击“演示”按钮时,课件可以动态地模拟弹簧振子振动的全过程,同时绘制振动图像,“演示”按钮同时自动变为“清除”按钮,点击“清除”按钮可以清除图像;分别点击“显示位移”、“显示速度”、“显示回复力”按钮,可以动态显示位移、速度和回复力的大小和方向随时间变化的矢量图,同时这些按钮自动变为“隐藏位移”、“隐藏速度”、“隐藏回复力”,分别点击它们可以隐藏位移、速度和回复力的矢量图;文本框中输入振幅值可以改变振子的振幅A;点击“退出”按钮可退出课件,运行效果如下图所示。
● 简谐运动课件的制作
1.添加对象
(1)启动PowerPoint 2003,插入一张空白幻灯片,通过“视图/工具栏”菜单打开“绘图”和“控件工具箱”这两个工具栏。
(2)坐标的绘制。
使用绘图工具栏上的箭头工具,按住Shift键,绘制一条自左向右的箭头作为水平时间轴,再次使用箭头工具,按住Shift键,绘制一条从上向下的箭头作为竖直位移轴,分别右键单击箭头弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格式对话框,分别在“颜色和线条、尺寸、大小”选项卡下做相应设置,点击“确定”按钮即可。
再使用绘图工具栏上的文本框工具,给横轴标上“t/s”,纵轴标上“x/m”。
(3)小球的绘制。
使用绘图工具栏上的“椭圆工具”,按住Shift键,绘制一个适当大小的圆形作为弹簧振子;再绘制一个直径为1mm的圆形作为振动图像的一个像点。
(4)弹簧的添加。
先利用Windows附件中的画图软件制作弹簧图片,通过“插入/图片/来自文件”菜单插入弹簧图片,右键单击图片弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格式对话框,在“尺寸”选项卡中取消“锁定纵横比”选项,其他选项卡根据需要做相应设置。
(5)矢量图的绘制。
使用绘图工具栏上的箭头工具,按住Shift键,绘制一条自上向下的箭头作为方向向下的位移矢量,然后复制这个箭头,右键单击箭头弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格式对话框,在“尺寸”选项卡旋转选项中输入180度,使箭头向上。
同样方法绘制速度矢量箭头和回复力矢量箭头,为了区别各矢量图可设置不同颜色代表不同的物理量。
(6)矢量标签的添加。
点击菜单栏“视图/工具栏/控件工具箱”命令弹出控件工具箱,点击“标签”图标添加标签,右键单击标签,在弹出的快捷菜单中点击“属性”命令,打开“属性”对话框,将“Caption”属性改为“位移”,属性“AutoSize”改为“True”,属性“ForeColor”改为与位移箭头相同的颜色。
同理,添加“速度”和“回复力”标签。
(7)输入文本框的添加。
在控件工具箱中,点击“文本框”图标添加文本框,根据需要设置属性。
再使用绘图工具栏上的文本框工具,分别在“文本框”两侧添加“振幅”和“cm”字样。
(8)按钮的添加。
在控件工具箱中,点击“命令按钮”图标添加按钮,右键单击“命令按钮”,在弹出的快捷菜单中点击“属性”命令,打开“属性”对话框,将“名称”和“Caption”属性都改为“演示”,属性“AutoSize”改为“True”。
同理,再添加8个“命令按钮”,将“名称”和“Caption”属性分别改为“清除”、“显示位移”、“隐藏位移”、“显示速度”、“隐藏速度”、“显示回复力”、“隐藏回复力”和“退出”,属性“AutoSize”都改为“True”。
通过鼠标移动这些命令按钮,分别使“演示”和“清除”按钮、“显示位移”和“隐藏位移”按钮、“显示速度”和“隐藏速度”按钮、“显示回复力”和“隐藏回复力”按钮完全叠加重合。
再选中所有的按钮,点击绘图工具栏上的“绘图/对齐或分布/顶端对齐”命令,可以使它们上下对齐;再次点击“绘图/对齐或分布/横向分布”命令,使它们横向等距离分布。
(9)对象名称的确定。
点击菜单栏“工具/宏/录制新宏”命令,打开录制新宏对话框,使用默认宏名并单击“确定”按钮,单击选定小球,单击浮动工具栏中的“停止录制”命令,结束宏录制。
点击菜单栏“工具/宏/宏”命令,选中刚才录制的宏名并单击“编辑”按钮,打开VBA编辑窗口,在代码中可以看到小球的名称为Shapes(“Oval 8”)。
同理,录制振动图像的像点名称为Shapes(“Oval 9”),前半周期的位移矢量名称为Shapes(“line 10”),后半周期的位移矢量名称为Shapes(“line 11”),前半周期的速度矢量名称为Shapes(“line 28”),后半周期的速度矢量名称为Shapes(“line 29”),前半周期的回复力矢量名称为Shapes(“line 31”),后半周期的回复力矢量名称为Shapes(“line 30”)。
2.编写宏代码
在幻灯片中双击按钮或文本框等控件进入宏编辑窗口,并输入以下代码:
Dim A As Single '定义变量A为单精度
Sub csjs() '通过输入文本框给振幅A赋值
A = Val(TextBox1.Text)
End Sub
Private Sub 演示_Click()
演示.Visible = False
清除.Visible = True
csjs
For i = 0 To 250
x1 = 110
y1 = A * Cos(t) '位移矢量
t = t + 0.1
Shapes("Oval 8").Left = x1 '小球的横坐标,对象名称必须与在宏中定义的名称一致 Shapes("Oval 8").Top = y1 + 215 '小球的纵坐标
Shapes("Picture 12").Height = y1 + 215 ' 弹簧的伸缩
Shapes("line 10").Height = A * Cos(t)
Shapes("line 11").Height = -A * Cos(t)
Shapes("line 28").Height = -A * Sin(t)
Shapes("line 29").Height = A * Sin(t)
Shapes("line 28")Top = y1 + 215
Shapes("line 29").Top = y1 + 215
Shapes("line 31").Height = -A * Cos(t)
Shapes("line 30").Height = A * Cos(t)
With Shapes("Oval 9").Duplicate '复制振动图像的像点到下列坐标位置
.Left = 22 * t + 130
.Top = y1 + 220
End With
T1 = Timer '控制动画速度
While Timer - T1 < 0.001 :DoEvents :Wend
Next
SlideShowWindows(1).View.GotoSlide 1 '页面刷新的语句
End Sub
Private Sub 清除_Click()
清除.Visible = False
演示.Visible = True
n = Shapes.Count '统计页面上的对象数
b = 30
Dim J As Integer
For J = n To b Step -1
Shapes(J).Delete '清除页面上指定的对象 T1 = Timer
While Timer - T1 < 0.01 :DoEvents :Wend Next
TextBox1.Value = 70
SlideShowWindows(1).View.GotoSlide 1 End Sub
Private Sub 显示回复力_Click()
显示回复力.Visible = False
隐藏回复力.Visible = True
Shapes("line 30").Visible = True
Shapes("line 31").Visible = True
Label4.Visible = True
SlideShowWindows(1).View.GotoSlide 1 End Sub
Private Sub 隐藏回复力_Click()
隐藏回复力.Visible = False
显示回复力.Visible = True
Shapes("line 30").Visible = False
Shapes("line 31").Visible = False
Label4.Visible = False
SlideShowWindows(1).View.GotoSlide 1
End Sub
Private Sub 退出_Click()
Application.Quit
End Sub
同理,“显示速度”、“显示位移”按钮代码与“显示回复力”按钮代码相同,“隐藏速度”、“隐藏位移”按钮代码与“隐藏回复力”按钮代码相同。
● 制作课件过程中遇到的问题及解决的方法
(1)代码中要引用有关控件或对象的名称,但是只有从“控件工具箱”中添加的控件才能在属性窗口中查到其名称,对于从绘图工具栏中绘制的各种自选图形以及“插入”菜单中插入的文本框、图片和表格等对象其名称便无从得知。
获取名称的唯一方法是针对这些对象录制一段临时宏,然后在宏代码中去查找。
(2)在模拟弹簧的伸缩动画时,利用Height属性改变图片的高度来实现,但是PowerPoint默认值是锁定纵横比,弹簧伸缩时不但纵向伸缩,而且横向也在伸缩。
所以,需要在弹簧图片的“尺寸”选项卡中取消“锁定纵横比”选项。
(3)在模拟各矢量大小变化时,也是利用Height属性改变箭头的高度来实现,但是PowerPoint默认状态下只是矢量图的下端伸缩,而上端无变化,在需要矢量图的上端伸缩时,可以先画一个向下的箭头,再在箭头的“尺寸”选项卡旋转选项中输入180度,单击“确定”使箭头向上。
(4)在利用Delete命令清除图像时,会把绘制的像点以及后来添加的对象全部清除掉,因此,制作课件时要在程序执行Shapes(J).Delete命令前一次性添加好所有控件和对象,在执行Shapes(J).Delete命令时,J的初始值必须大于界面上添加的所有控件和对象数。
(5)由于课件命令按钮较多,界面显得比较凌乱无序,我们采用了Visible属性使按钮显示和隐藏交替出现,在同一位置设计两个按钮,保证界面美观有序。
(6)制作好的课件不能正常运行。
为了防范宏病毒对计算机的侵害,一般情况下,在PowerPoint的工具菜单中对宏的安全性设置为“高”选项,这时将拒绝执行VBA代码。
在确保VBA代码运行无害的前提下,需要降低PowerPoint的安全等级以使VBA代码得以执行。
单击菜单栏“工具/宏/安全性”命令,打开“安全性”对话框,单击“安全级”选项卡,选择“中”或“低”选项,单击“确定”即可。