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