黎昌慶 向興花 何姬勛
一、設(shè)計預(yù)演效果
要避免制作課件過程的盲目性,做到省時高效,最好能在制作課件前將要實現(xiàn)的演示效果書面化。
筆者希望通過Flash實現(xiàn)的效果是讓小球?qū)嶓w在平衡位置O點左右來回振動,振動過程中作變加速運動,且彈簧實體的長度也要隨之變化,給人的視覺效果就是彈簧使小球做往復(fù)運動。合力(或者加速度)實體和速度實體同步顯示相關(guān)物理量大小和方向。同時,為了讓課件具有交互性,并能留給學(xué)生思考研究的空間,可以通過按鈕控制合力(或者加速度)實體和速度實體的顯示或隱藏,還可以通過圖1左下角的一系列按鈕改變小球質(zhì)量、彈簧的勁度系數(shù)、最大形變量(振幅)的大小,引導(dǎo)學(xué)生觀察不同變化情況下小球的振動,進而研究小球的振動周期與哪些因素有關(guān)、有什么關(guān)系。
二、素材的制作
根據(jù)構(gòu)思確定需要哪些素材。從圖1可以看出需要兩類素材:影片剪輯實體和按鈕實體。其中,彈簧實體、小球?qū)嶓w、合力實體和速度實體屬影片剪輯,需要另行分別制作。按鈕實體可以直接通過“窗口 → 公用庫 → 按鈕”找到。
在Flash的編輯窗口,依次打開“插入”→“新建組件”→“創(chuàng)建新元件”,在彈出的“創(chuàng)建新元件”屬性對話框中,素材的性質(zhì)應(yīng)設(shè)成“影片剪輯”(圖2)。在制作“彈簧實體”時,屏幕上的坐標(biāo)原點就是中心位置,應(yīng)從中心位置開始畫折線,形成一個水平放置的彈簧(圖3)。
這時彈簧實體已在庫中,通過“窗口 →庫→ 影片剪輯”,就可以在影片剪輯列表中看到名稱為“彈簧實體”的影片,將名稱為“彈簧實體”的影片拖到場景中,點擊工具欄左上角的箭頭按鈕,選中場景中的“彈簧實體”,點擊工具欄右下角的縮放按鈕,改變彈簧實體的大小。制作其他影片剪輯實體與制作“彈簧實體”相似,在制作小球?qū)嶓w組件時,要讓球心與編輯窗口中的中心位置重合。制作合力實體和速度實體時,將箭頭與編輯窗口的中心位置重合。
三、程序設(shè)計
在圖4“Action”圖層中設(shè)置程序。要在某一幀設(shè)置程序,需將鼠標(biāo)移至該幀,單擊鼠標(biāo)右鍵彈出下拉菜單,單擊“動作”選項(圖5),即可進入動作設(shè)置屬性對話框進行程序設(shè)置(圖6)。
1.主體程序
(1) 在Action圖層(圖4)的第一幀設(shè)定初始參數(shù)
x0 = 392;//圖1中振子平衡位置O點的橫坐標(biāo)
x1 = 532;//圖1中B點的橫坐標(biāo)
y0 = 88;//彈簧振子和小球?qū)嶓w的縱坐標(biāo)
v0 = 0;//小球的初始速度
p1 = 74;//圖1中彈簧固定點的橫坐標(biāo)
zhi1 = false;
zhi2 = false;//“zhi1”和“zhi2”是兩個邏輯變量,初始布爾值是False
m = 2000;//表示小球的質(zhì)量
k = 0.01;//表示彈簧的勁度系數(shù)
play();
(2)在第三幀設(shè)定下列參數(shù)
t0 = getTimer();//表示獲取程序執(zhí)行第三幀時的時間
m2 = x0;//合力實體的橫坐標(biāo)
n2 = Number(y0)+100;//合力實體的縱坐標(biāo)
m3 = x0;//速度實體的橫坐標(biāo)
n3 = Number(y0)+200;//速度實體的縱坐標(biāo)
(3)在第四幀設(shè)置程序
x0 = 392;
t1 = getTimer();
y1 = y0;
t = t1-t0;
x = x1-x0;
f = k*x/10;
a = f/m;
v0 = Number(v0)+Number(a*t);
s = v0*t;
x1 = x1-s;
//伴隨時間發(fā)生變化,可以由動力學(xué)知識和運動學(xué)知識計算出小球位置坐標(biāo),速度、位移和受力都在隨時間的變化而變化。
setProperty("/小球", _x, x1);//根據(jù)計算出的坐標(biāo)確定小球應(yīng)處的位置
p = (x1-p1)/(x0-p1);
setProperty("/彈簧", _xscale, p*100);//根據(jù)小球的位置設(shè)定彈簧實體x軸方向的放大比例,使彈簧右端隨時和小球中心重合。這樣給人的視覺是彈簧帶動小球在振動。
n = (x1-x0)/120;
if (Number(n)>0) {
setProperty("/合力", _xscale, n*100);
setProperty("/合力", _x, m2);
setProperty("/合力", _y, n2);
setProperty("/合力1", _alpha, 0);
setProperty("/合力", _alpha, 100);
} else {
setProperty("/合力1", _xscale, (x0-x1)/1.2);
setProperty("/合力1", _x, m2);
setProperty("/合力1", _y, n2);
setProperty("/合力", _alpha, 0);
setProperty("/合力1", _alpha, 100);
}
//將合力實體復(fù)制,把復(fù)制的合力實體水平翻轉(zhuǎn)并命名為“合力1”。用這兩個實體分別表示振子在平衡位置兩邊所受合力的方向,其長短的變化表示合力大小的變化。實體長短的變化由位移x1-x0的絕對值來決定。當(dāng)振動小球位于平衡位置右邊時,合力實體的alpha值設(shè)為0,即不透明,合力1實體設(shè)成透明;當(dāng)小球位于平衡位置左邊時,情況相反。
if (Number(v0)>0) {
setProperty("/速度", _xscale, v0*1000);
setProperty("/速度", _x, m3);
setProperty("/速度", _y, n3);
setProperty("/速度", _alpha, 100);
setProperty("/速度1", _alpha, 0);
} else {
setProperty("/速度", _alpha, 0);
setProperty("/速度1", _alpha, 100);
setProperty("/速度1", _xscale, v0*1000);
setProperty("/速度1", _x, m3);
setProperty("/速度1", _y, n3);
}
//關(guān)于速度的顯示與上文所述合力的顯示雷同。
x1 = getProperty("/小球", _x);
gotoAndPlay(3);//將實體小球的橫坐標(biāo)值賦給變量x1并返回第三幀,循環(huán)執(zhí)行第四幀的程序
2.交互性設(shè)置
on (release) {
setProperty("/合力", _visible, zhi1);
setProperty("/合力1", _visible, zhi1);
zhi1 = not zhi1;
}
//對合力實體顯示與否由邏輯判斷來決定。邏輯變量zhi1的值是True時,就顯示合力,是False就隱藏。每按一次“顯示/隱藏”按鈕,邏輯值變一次,從而達到控制顯示與隱藏
on (release) {
setProperty("/速度", _visible, zhi2);
setProperty("/速度1", _visible, zhi2);
zhi2 = not zhi2;
}
//對速度的顯示與隱藏和合力實體的交互性設(shè)置雷同,也是由邏輯判斷來決定的
On (Release)
Set Variable: "m" = 6000
End On
//小球質(zhì)量變大按鈕的動作設(shè)置
On (Release)
Set Variable: "m" = 500
End On
//小球質(zhì)量變小按鈕的動作設(shè)置
On (Release)
Set Variable: "k" = 0.04
End On
//彈簧勁度系數(shù)變大按鈕的動作設(shè)置
On (Release)
Set Variable: "k" = 0.005
End On
//彈簧勁度系數(shù)變小按鈕的動作設(shè)置
On (Release)
Set Variable: "x1" = 550
End On
//彈簧形變量變大按鈕的動作設(shè)置
On (Release)
Set Variable: "x1" = 470
End On
//彈簧形變量變小按鈕的動作設(shè)置
On (Release)
Go to and Play (1)
End On
//對復(fù)原播放按鈕的動作設(shè)置
On (Release)
Stop
End On
//對暫停按鈕的動作設(shè)置
On (Release)
Go to and Stop (5)
End On
//下一頁按鈕的動作設(shè)置
除了上述按鈕交互設(shè)置,還可以根據(jù)教學(xué)的需要把教材的練習(xí)用文本框來表示。這些文本框都可以通過輸入文字達到交互的目的,以此激發(fā)學(xué)生學(xué)習(xí)興趣。
四、導(dǎo)出動畫
制作完畢,設(shè)定動畫的播放速度,建議值為120幀/秒,以保證動畫效果是連續(xù)的。最后需要將文件以動畫形式導(dǎo)出,點擊“文件”下拉菜單中“導(dǎo)出動畫”選項,在彈出的保存動畫中輸入一個文件名并確定,這樣一個以SWF為擴展名的文件便生成了。當(dāng)你打開這個新文件時,就可以看到振動著的彈簧振子了。