国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

例談利用PowerPoint中的VBA制作交互式物理課件

2013-12-29 00:00:00陳夏玲閆小軍
中國信息技術(shù)教育 2013年1期

摘要:針對PowerPoint的強大功能,本文結(jié)合課件《簡諧運動》的制作過程,歸納了利用PowerPoint中的VBA制作交互式物理課件的基本策略、動畫實現(xiàn)方法與技巧。

關(guān)鍵詞:PowerPoint;VBA;物理課件;交互性

PowerPoint課件由于制作方便、快捷,深受大家喜愛。但絕大多數(shù)由PowerPoint制作的課件交互功能差、動畫簡單、形式呆板,成了名副其實的幻燈片,尤其是交互性強的動畫模擬課件很少見到。因此,許多人錯誤地認為PowerPoint只是制作幻燈片的簡單工具,功能有限,不可能制作出交互性很強的課件。通過反復(fù)地思考和摸索,我們發(fā)現(xiàn)可以利用PowerPoint中的VBA制作出交互性很強、動感十足且符合物理運動規(guī)律的課件,下面就粗略介紹一下《簡諧運動》課件的制作方法及關(guān)鍵技術(shù)。

● 課件制作的原理和實現(xiàn)的功能

1.彈簧振子做簡諧運動動畫的實現(xiàn)

彈簧振子的振動過程也就是小球的運動過程。設(shè)定一個時間間隔,只要計算出每個時間間隔后小球圓心的位置,也就知道了小球的運動軌跡。我們可以把實際問題轉(zhuǎn)化為運用循環(huán)結(jié)構(gòu)和簡諧運動規(guī)律來計算圓心運動軌跡的過程。具體算法如下:簡諧運動中彈簧振子離開平衡位置的位移x隨時間t變化的函數(shù)表達式為:,彈簧振子的速度v隨時間t變化的關(guān)系為:,彈簧振子的加速度a隨時間t變化的關(guān)系為:,其中A為振幅, 為角速度,即,T是振動周期,是初相位。假設(shè)振子運動的角速度ω=1,初相位=0,簡諧運動的函數(shù)表達式簡化為:,。運動時間t初值為0,輸入振幅A,計算出彈簧振子的位移x、速度v和加速度a,累加小球運動的時間t=t+0.1,直到t大于所設(shè)定的時間結(jié)束。

2.課件實現(xiàn)的功能

點擊“演示”按鈕時,課件可以動態(tài)地模擬彈簧振子振動的全過程,同時繪制振動圖像,“演示”按鈕同時自動變?yōu)椤扒宄卑粹o,點擊“清除”按鈕可以清除圖像;分別點擊“顯示位移”、“顯示速度”、“顯示回復(fù)力”按鈕,可以動態(tài)顯示位移、速度和回復(fù)力的大小和方向隨時間變化的矢量圖,同時這些按鈕自動變?yōu)椤半[藏位移”、“隱藏速度”、“隱藏回復(fù)力”,分別點擊它們可以隱藏位移、速度和回復(fù)力的矢量圖;文本框中輸入振幅值可以改變振子的振幅A;點擊“退出”按鈕可退出課件,運行效果如下圖所示。

● 簡諧運動課件的制作

1.添加對象

(1)啟動PowerPoint 2003,插入一張空白幻燈片,通過“視圖/工具欄”菜單打開“繪圖”和“控件工具箱”這兩個工具欄。

(2)坐標(biāo)的繪制。使用繪圖工具欄上的箭頭工具,按住Shift鍵,繪制一條自左向右的箭頭作為水平時間軸,再次使用箭頭工具,按住Shift鍵,繪制一條從上向下的箭頭作為豎直位移軸,分別右鍵單擊箭頭彈出快捷菜單,選擇“設(shè)置自選圖形格式”命令,打開設(shè)置自選圖形格式對話框,分別在“顏色和線條、尺寸、大小”選項卡下做相應(yīng)設(shè)置,點擊“確定”按鈕即可。再使用繪圖工具欄上的文本框工具,給橫軸標(biāo)上“t/s”,縱軸標(biāo)上“x/m”。

(3)小球的繪制。使用繪圖工具欄上的“橢圓工具”,按住Shift鍵,繪制一個適當(dāng)大小的圓形作為彈簧振子;再繪制一個直徑為1mm的圓形作為振動圖像的一個像點。

(4)彈簧的添加。先利用Windows附件中的畫圖軟件制作彈簧圖片,通過“插入/圖片/來自文件”菜單插入彈簧圖片,右鍵單擊圖片彈出快捷菜單,選擇“設(shè)置自選圖形格式”命令,打開設(shè)置自選圖形格式對話框,在“尺寸”選項卡中取消“鎖定縱橫比”選項,其他選項卡根據(jù)需要做相應(yīng)設(shè)置。

(5)矢量圖的繪制。使用繪圖工具欄上的箭頭工具,按住Shift鍵,繪制一條自上向下的箭頭作為方向向下的位移矢量,然后復(fù)制這個箭頭,右鍵單擊箭頭彈出快捷菜單,選擇“設(shè)置自選圖形格式”命令,打開設(shè)置自選圖形格式對話框,在“尺寸”選項卡旋轉(zhuǎn)選項中輸入180度,使箭頭向上。同樣方法繪制速度矢量箭頭和回復(fù)力矢量箭頭,為了區(qū)別各矢量圖可設(shè)置不同顏色代表不同的物理量。

(6)矢量標(biāo)簽的添加。點擊菜單欄“視圖/工具欄/控件工具箱”命令彈出控件工具箱,點擊“標(biāo)簽”圖標(biāo)添加標(biāo)簽,右鍵單擊標(biāo)簽,在彈出的快捷菜單中點擊“屬性”命令,打開“屬性”對話框,將“Caption”屬性改為“位移”, 屬性“AutoSize”改為“True”,屬性“ForeColor”改為與位移箭頭相同的顏色。同理,添加“速度”和“回復(fù)力”標(biāo)簽。

(7)輸入文本框的添加。在控件工具箱中,點擊“文本框”圖標(biāo)添加文本框,根據(jù)需要設(shè)置屬性。再使用繪圖工具欄上的文本框工具,分別在“文本框”兩側(cè)添加“振幅”和“cm”字樣。

(8)按鈕的添加。在控件工具箱中,點擊“命令按鈕”圖標(biāo)添加按鈕,右鍵單擊“命令按鈕”,在彈出的快捷菜單中點擊“屬性”命令,打開“屬性”對話框,將“名稱”和“Caption”屬性都改為“演示”,屬性“AutoSize”改為“True”。同理,再添加8個“命令按鈕”,將“名稱”和“Caption”屬性分別改為“清除”、“顯示位移”、“隱藏位移”、“顯示速度”、“隱藏速度”、“顯示回復(fù)力”、“隱藏回復(fù)力”和“退出”,屬性“AutoSize”都改為“True”。

通過鼠標(biāo)移動這些命令按鈕,分別使“演示”和“清除”按鈕、“顯示位移”和“隱藏位移”按鈕、“顯示速度”和“隱藏速度”按鈕、“顯示回復(fù)力”和“隱藏回復(fù)力”按鈕完全疊加重合。再選中所有的按鈕,點擊繪圖工具欄上的“繪圖/對齊或分布/頂端對齊”命令,可以使它們上下對齊;再次點擊“繪圖/對齊或分布/橫向分布”命令,使它們橫向等距離分布。

(9)對象名稱的確定。點擊菜單欄“工具/宏/錄制新宏”命令,打開錄制新宏對話框,使用默認宏名并單擊“確定”按鈕,單擊選定小球,單擊浮動工具欄中的“停止錄制”命令,結(jié)束宏錄制。點擊菜單欄“工具/宏/宏”命令,選中剛才錄制的宏名并單擊“編輯”按鈕,打開VBA編輯窗口,在代碼中可以看到小球的名稱為Shapes(“Oval 8”)。同理,錄制振動圖像的像點名稱為Shapes(“Oval 9”),前半周期的位移矢量名稱為Shapes(“l(fā)ine 10”),后半周期的位移矢量名稱為Shapes(“l(fā)ine 11”),前半周期的速度矢量名稱為Shapes(“l(fā)ine 28”),后半周期的速度矢量名稱為Shapes(“l(fā)ine 29”),前半周期的回復(fù)力矢量名稱為Shapes(“l(fā)ine 31”),后半周期的回復(fù)力矢量名稱為Shapes(“l(fā)ine 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 '小球的橫坐標(biāo),對象名稱必須與在宏中定義的名稱一致

Shapes("Oval 8").Top = y1 + 215 '小球的縱坐標(biāo)

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 '復(fù)制振動圖像的像點到下列坐標(biāo)位置

.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 '統(tǒng)計頁面上的對象數(shù)

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 顯示回復(fù)力_Click()

顯示回復(fù)力.Visible = False

隱藏回復(fù)力.Visible = True

Shapes("line 30").Visible = True

Shapes("line 31").Visible = True

Label4.Visible = True

SlideShowWindows(1).View.GotoSlide 1

End Sub

Private Sub 隱藏回復(fù)力_Click()

隱藏回復(fù)力.Visible = False

顯示回復(fù)力.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

同理,“顯示速度”、“顯示位移”按鈕代碼與“顯示回復(fù)力”按鈕代碼相同,“隱藏速度”、“隱藏位移”按鈕代碼與“隱藏回復(fù)力”按鈕代碼相同。

● 制作課件過程中遇到的問題及解決的方法

(1)代碼中要引用有關(guān)控件或?qū)ο蟮拿Q,但是只有從“控件工具箱”中添加的控件才能在屬性窗口中查到其名稱,對于從繪圖工具欄中繪制的各種自選圖形以及“插入”菜單中插入的文本框、圖片和表格等對象其名稱便無從得知。獲取名稱的唯一方法是針對這些對象錄制一段臨時宏,然后在宏代碼中去查找。

(2)在模擬彈簧的伸縮動畫時,利用Height屬性改變圖片的高度來實現(xiàn),但是PowerPoint默認值是鎖定縱橫比,彈簧伸縮時不但縱向伸縮,而且橫向也在伸縮。所以,需要在彈簧圖片的“尺寸”選項卡中取消“鎖定縱橫比”選項。

(3)在模擬各矢量大小變化時,也是利用Height屬性改變箭頭的高度來實現(xiàn),但是PowerPoint默認狀態(tài)下只是矢量圖的下端伸縮,而上端無變化,在需要矢量圖的上端伸縮時,可以先畫一個向下的箭頭,再在箭頭的“尺寸”選項卡旋轉(zhuǎn)選項中輸入180度,單擊“確定”使箭頭向上。

(4)在利用Delete命令清除圖像時,會把繪制的像點以及后來添加的對象全部清除掉,因此,制作課件時要在程序執(zhí)行Shapes(J).Delete命令前一次性添加好所有控件和對象,在執(zhí)行Shapes(J).Delete命令時,J的初始值必須大于界面上添加的所有控件和對象數(shù)。

(5)由于課件命令按鈕較多,界面顯得比較凌亂無序,我們采用了Visible屬性使按鈕顯示和隱藏交替出現(xiàn),在同一位置設(shè)計兩個按鈕,保證界面美觀有序。

(6)制作好的課件不能正常運行。為了防范宏病毒對計算機的侵害,一般情況下,在PowerPoint的工具菜單中對宏的安全性設(shè)置為“高”選項,這時將拒絕執(zhí)行VBA代碼。在確保VBA代碼運行無害的前提下,需要降低PowerPoint的安全等級以使VBA代碼得以執(zhí)行。單擊菜單欄“工具/宏/安全性”命令,打開“安全性”對話框,單擊“安全級”選項卡,選擇“中”或“低”選項,單擊“確定”即可。

湘阴县| 晴隆县| 开鲁县| 彰化市| 萨迦县| 南安市| 武乡县| 舞阳县| 安西县| 孝感市| 康乐县| 民勤县| 如皋市| 忻城县| 乳山市| 广饶县| 霞浦县| 依兰县| 睢宁县| 建阳市| 鄂尔多斯市| 武胜县| 崇阳县| 兰溪市| 曲阳县| 榕江县| 唐河县| 香港 | 丁青县| 且末县| 会理县| 沧源| 柘荣县| 成都市| 略阳县| 澎湖县| 江源县| 集贤县| 武清区| 承德市| 沈丘县|