朱龍青
在高山上用不同的水平初速度拋出物體。若初速度一次比一次大,物體落地點就一次比一次遠;當初速度足夠大時,物體就再也不落回地面,而是做以地心為一個焦點的不同軌道的橢圓(或圓)運動。當物體向近地點(或遠地點)運動時,物體的速度將變大(或變小)。用Flash MX動態(tài)顯示上述“牛頓草圖”時,可以在動態(tài)文本框中呈現(xiàn)不同時刻物體的速度變化。
本課件有助于學生形象而直觀地領(lǐng)悟牛頓有關(guān)人造天體的科學設(shè)想,理解開普勒定律以及人造衛(wèi)星原理(圖1)。
一、布置舞臺
運行Flash MX新建文檔,將文檔屬性設(shè)定為寬550像素、高450像素,幀速40幀/秒,背景為灰色。
二、建立庫物件
打開庫,新建一個名為dq的電影剪輯(圖2),利用繪圖工具繪制一個灰白輻射色的球代表“地球”。打開信息面板設(shè)定“地球”的半徑為54像素(圖3),以便顯示及編程。
新建一個名為wx的電影剪輯,利用繪圖工具繪制一個紅輻射色的球代表“衛(wèi)星”,打開信息面板設(shè)定“衛(wèi)星”的半徑為6像素。
新建一個名為di 的電影剪輯,利用繪圖工具繪制一個藍色的圓代表軌跡“點”(通過復制軌跡“點”描繪“衛(wèi)星”的運動軌跡),打開信息面板設(shè)定軌跡“點”的半徑為1像素。
新建一個按鈕,取名為Button,利用繪圖工具在其第一幀繪制一個紅色正方形(其邊長為43像素),并在第四幀插入一個幀,完成按鈕制作。到此完成所有庫物件的制作。
三、組織場景
回到場景,在時間線上(從下到上)共建七層(圖4),分別將各層命名為“地球”、“衛(wèi)星”、“點”、“開始暫?!薄ⅰ皬臀弧?、“文本”、“actoin”。
單擊“地球” 層的第一幀后,把庫中的“dq”拖到場景中。打開信息面板,將地心的坐標設(shè)為(300,220);單擊“衛(wèi)星”層的第一幀后,把庫中的“wx”拖到場景中,將“衛(wèi)星”的坐標設(shè)為(364,220);單擊“點”層的第一幀后,把庫中的“di”拖到場景中,把軌跡“點”的坐標設(shè)為(364,220);單擊“開始暫?!睂拥牡谝粠?,把庫中的“button”拖到場景中右邊的適當位置,并在此按鈕的上方輸入文字“開始”作為控制開始播放的按鈕;在該層的第二幀插入一個關(guān)鍵幀,把庫中的“button”拖到場景中“開始”按鈕的上方適當位置,并在其上輸入文字“暫停” 作為控制課件暫停播放的按鈕;在復位層的第二幀插入一個關(guān)鍵幀,把庫中的“button”拖到場景的右邊“開始”按鈕的同一位置上(這樣使課件播放時只顯示這兩個按鈕中的一個),并在其上輸入文字“復位”作為控制課件回到原始狀態(tài)。
單擊“文本”層的第一幀后,利用文字工具繪制一個文本框(寬48像素,高30像素)放在舞臺的右上角(“暫停”按鈕的上方)適當位置,在此文本框的上方輸入“v(km/s)”,制成一個用以顯示衛(wèi)星瞬時速度的動態(tài)文本框。同理,繪制一個同樣的文本框放在上述文本框的上方,在此文本框的上方輸入“vo(km/s)”,制成一個用鍵盤輸入衛(wèi)星水平初速度的輸入文本框。
在場景中選中“衛(wèi)星”后,打開屬性面板,在實例名中輸入字母wx(圖5);選中軌跡“點”后,在實例名中輸入字母di;選中輸入文本框后,把文本類型設(shè)定為輸入文本,下方輸入字母t1,并在變量名中也輸入字母t1(圖6);選中動態(tài)文本框后,把文本類型設(shè)定為動態(tài)文本,下方輸入字母t2,并在變量名中也輸入字母t2。注意文本類型不能設(shè)定錯,變量名也不能不輸入,否則程序?qū)⒉荒軅鬟f變量。
四、編寫腳本
(1)選中舞臺上的“開始”按鈕,單擊動作面板寫入代碼:
on (release, keyPress "
if (t1<0) {
stop();
t1 = "";
t2 = "";
} else {
vo = t1/100;
gotoAndPlay(2);
}
}
//若輸入速度小于0,不播放,否則按“開始”按鈕,或Enter鍵,把輸入的初速度賦予vo并跳轉(zhuǎn)到第二幀播放
(2)單擊“開始暫?!睂拥牡诙?,選中舞臺上的“暫?!卑粹o寫入代碼:
on (release) {
stop();
}
//按“暫?!卑粹o則停止播放
on (keyPress "
play();
}
//按“Enter”鍵則繼續(xù)播放
(3)單擊“復位”層的第二幀,選中舞臺上的“復位”按鈕寫入代碼:
on (press) {
gotoAndPlay(1);
}
//按“復位”按鈕回到第一幀。
(4)action層的第一幀,寫入代碼:
stop();
fscommand("fullscreen", "true");
//命令全屏播放
t = 0;
//時間歸0
j = 0;
//極角歸0
t1 = "";
//輸入速度歸0
t2 = "";
//動態(tài)速度歸0
r = 64;
//極徑初始值(衛(wèi)星距地心的初始距離)
setProperty("di", _x, 364);
setProperty("di", _y, 220);
//軌跡點的起始坐標
setProperty("wx", _x, 364);
setProperty("wx", _y, 220);
//衛(wèi)星的起始坐標
(5)action層的第二幀插入一個關(guān)鍵幀,寫入代碼:
t = t+dt;
dt = 15;
//dt為運動時間的步長
n = n+1;
//軌跡點的個數(shù)自動增加
ro = 64;
//代表衛(wèi)星的起始高度64百千米
h = ro*vo;
//衛(wèi)星橢圓運動的角動量大小不變
p = h*h/d;
//衛(wèi)星橢圓軌跡方程的半正焦弦
e = Math.pow((1+h*h/d/d*(vo*vo-2*d/ro)), 0.5);
//衛(wèi)星橢圓軌跡方程中的離心率e(且0 d = 64*64*0.000098; if (t1 == 0 && t<=452) { setProperty("wx", _x, 300+ro-0.5*0.000098*t*t); setProperty("wx", _y, 220); //衛(wèi)星自由下落動態(tài)坐標,t<=452表示落到地面以前運動 setProperty("di", _x, 300+ro-0.5*0.000098*t*t); setProperty("di", _y, 220); //軌跡點動態(tài)坐標 r = getProperty("wx", _x)-300; t2 = 0.0098*t; } //在動態(tài)文本框顯示衛(wèi)星的瞬時速度(單位為千米/秒),若輸入初速度vo=0,衛(wèi)星在x方向位移x=0.5gt*t,共運動10千米,速度近似用v=gt計算,單位分別是千米、千米/秒 if (t1>0 && t1<=7.9 && r>=54) { j = j+dt*h*Math.pow(r, -2); //j為衛(wèi)星橢圓運動的極角,由角動量守恒r*r*dj/dt=h得dj=dt*h/r*r r = p/(1-e*Math.cos(j)); //衛(wèi)星橢圓運動的極徑。注意,隨著初速的增大,相對于舞臺的橢圓的右焦點逐漸向左移(左焦點即地心不動)t1=7.9時,左右焦點重合,t1>7.9后左右焦點將交換位置,理解這點很重要! setProperty("wx", _x, 300+r*Math.cos(j)); setProperty("wx", _y, 220+r*Math.sin(j)); setProperty("di", _x, 300+r*Math.cos(j)); setProperty("di", _y, 220+r*Math.sin(j)); //輸入速度小于第一宇宙速度時,衛(wèi)星及軌跡點的動態(tài)x、y坐標, r>=54表示落到地面就停止運動 t2 = 100*Math.pow(vo*vo-2*d*(1/ro-1/r), 0.5); } //在動態(tài)文本框顯示衛(wèi)星的瞬時速度,單位為千米/秒 if (t1>7.9 && t1<=11.2) { j = j+dt*h*Math.pow(r, -2); r = p/(1+e*Math.cos(j)); //由于衛(wèi)星的初速大于7.9千米/秒后,左右焦點已交換位置,為確保都過起點,式中e已改為-e setProperty("wx", _x, 300+r*Math.cos(j)); setProperty("wx", _y, 220+r*Math.sin(j)); setProperty("di", _x, 300+r*Math.cos(j)); setProperty("di", _y, 220+r*Math.sin(j)); //輸入速度大于第一宇宙速度小于第二宇宙速度下,衛(wèi)星及軌跡點的動態(tài)x、y坐標 t2 = 100*Math.pow(vo*vo-2*d*(1/ro-1/r), 0.5); } if (n<=5000) { duplicateMovieClip("di", "di"+n, n); } //軌跡點不能復制太多(限制在5000個以內(nèi))否則影響播放速度,當然也可以少點。 (6)action層的第三幀插入一個關(guān)鍵幀,寫入代碼: gotoAndPlay(2); //跳轉(zhuǎn)到第一幀循環(huán)播放。 最后在各層(除action層之外)的第三幀分別插入一個插入幀,這樣整個動畫創(chuàng)建完畢。