萬(wàn) 麗 藺志平 陳曉景 霍 莉
(保定學(xué)院 生化系,河北 保定 071300)
帶有一個(gè)微孔的空心金屬球,可以近似的看做為黑體。 教師用線段表示電磁輻射的軌跡如圖1, 輔助黑體輻射多媒體教學(xué)。 該圖片并不能形象地表達(dá)電磁輻射在黑體內(nèi)動(dòng)態(tài)的運(yùn)動(dòng)效果。 利用圓周上的隨機(jī)函數(shù)與電磁輻射在黑體里的無(wú)規(guī)則運(yùn)動(dòng)相符合的特點(diǎn),在Flash 腳本語(yǔ)言中設(shè)置相應(yīng)的參數(shù),制作電磁輻射的單個(gè)粒子被復(fù)制、分步跟蹤的動(dòng)畫,表現(xiàn)出電磁輻射經(jīng)微孔發(fā)射以及進(jìn)入金屬球微孔的輻射在金屬球腔內(nèi)多次吸收、反射的效果。 采用動(dòng)態(tài)課件取代靜止圖片,在該知識(shí)點(diǎn)的描述上更加具有科學(xué)性和直觀性[1]。
圖1
制作該動(dòng)畫的要點(diǎn)是隨機(jī)坐標(biāo)的計(jì)算。 由于金屬殼的外觀是由弧線構(gòu)成的圓, 所以需要應(yīng)用Math.sqrt、Math.abs 等函數(shù)進(jìn)行運(yùn)算,即根據(jù)電磁輻射在金屬殼的腔壁上出現(xiàn)的橫坐標(biāo)x,求得相應(yīng)的縱坐標(biāo)y。
第一步:創(chuàng)建帶微孔的金屬殼。 打開(kāi)FlashCS,選擇【插入】/【新建元件】,在對(duì)話框選擇“圖形”,命名為“金屬殼”。 利用【橢圓工具】繪制一“筆觸顏色”為黑,“筆觸高度”為7,“填充顏色”為灰白色的圓形。 【屬性】中設(shè)置寬=300.0;高=300.0;x=0;y=0。使用【橡皮擦工具】,點(diǎn)擊【橡皮擦模式】,選擇【擦除線條】在金屬殼的右側(cè)居中位置進(jìn)行擦除微孔。
第二步:創(chuàng)建粒子。 命名為“粒子”。 利用【橢圓工具】繪制一線形漸變小球。
第三步:創(chuàng)建發(fā)射源。 新建“圖片”,利用【矩形工具】繪制一“筆觸顏色”為黑,“填充顏色”為灰白色的圓形。 使用【文本工具】添加文字“發(fā)射源”。
第一步:回到場(chǎng)景1,從【庫(kù)】中分別拖動(dòng)“金屬殼”、“發(fā)射源”以及“粒子”到舞臺(tái)。 在“金屬殼”【屬性】中設(shè)置x=50;y=50。
第二步:在“粒子”的【屬性】命名為“e0”。 點(diǎn)擊第一幀,打開(kāi)【動(dòng)作-幀】面板,添加代碼:
stop();
x1=50;
y1=200;//粒子到達(dá)黑體最左側(cè)的坐標(biāo)
n=5;//粒子運(yùn)行的步數(shù)
/* 復(fù)制4 個(gè)跟蹤的粒子*/
for(i=1;i<=4;i++) {
duplicateMovieClip("e0","e"+i,i);
_root["e"+i]._alpha=_root["e"+(i-1)]._alpha/2;
}
onEnterFrame=function () {
/* 粒子與x1、y1 之間每次以1/n 的位移進(jìn)行跟蹤*/
e0._x+=(x1-e0._x)/n;
e0._y+=(y1-e0._y)/n;
/* 粒子與前粒子之間每次以1/n 的位移進(jìn)行跟蹤*/
for(i=1;i<=4;i++) {
_root["e"+i]._x+=(_root["e"+(i-1)]._x-_root["e"+i]._x)/n;
_root["e"+i]._y+=(_root["e"+(i-1)]._y-_root["e"+i]._y)/n;
}
if (Math.abs(e0._x-x1)<1 && Math.abs(e0._y-y1)<1) {
gotoAndPlay(2); //當(dāng)粒子與x1,y1 近似重合,跳轉(zhuǎn)到第二幀
}
};
第一步:在第二幀【插入】/【時(shí)間軸】/【關(guān)鍵幀】。
第二步:選中“粒子”,在【屬性】中設(shè)置x=50;y=200。 點(diǎn)擊第二幀,打開(kāi)【動(dòng)作-幀】面板,添加如下代碼:
stop();//停留在第二幀保持金屬殼內(nèi)的反射運(yùn)動(dòng)
mx1=200;//金屬殼的圓心坐標(biāo)
my1=200;
r=150;//設(shè)金屬殼的半徑為30
n=3;
for(i=1;i<=4;i++) {
duplicateMovieClip("e0","e"+i,i);
_root["e"+i]._alpha=_root["e"+(i-1)]._alpha/2;
}
flag=0;
onEnterFrame=function(){
if(flag==0) {
/* 計(jì)算粒子在金屬球內(nèi)的隨機(jī)坐標(biāo)*/
x1=mx1-r+random(2*r);
if (random(2)==1) {
y1=my1+Math.sqrt(r*r-Math.abs(x1-mx1)*Math.
abs(x1-mx1));
} else {
y1=my1-Math.sqrt(r*r-Math.abs(x1-mx1)*Math.
abs(x1-mx1));
}
flag=1;
} else {
e0._x+=(x1-e0._x)/n;
e0._y+=(y1-e0._y)/n;
if(Math.abs(x1-e0._x)<0.5&&Math.abs(y1-e0._y)<0.5) {
flag=0;//當(dāng)粒子與新坐標(biāo)近似重合, 重新獲取新坐標(biāo)
}
for(i=1;i<=4;i++) {
_root["e"+i]._x+=(_root["e"+(i-1)]._x-_root["e"+i]._x)/n;
_root["e"+i]._y+=(_root["e"+(i-1)]._y-_root["e"+i]._y)/n;
}
}
};
圖2
代碼說(shuō)明: 代碼中所涉及的變量和屬性值含義如圖2 所示。
第三步:動(dòng)畫制作完成,按Ctrl+Enter 鍵可以測(cè)試影片[4]
[1]周公度,段連運(yùn).結(jié)構(gòu)化學(xué)基礎(chǔ).第四版,北京:北京大學(xué)出版社,2009:1-2
[2]師書(shū)恩.計(jì)算機(jī)輔助教育基本原理[M].北京:電子工業(yè)出版社,1995:53-60
[3]徐邸祥.使用C# 開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序.北京:科學(xué)技術(shù)文獻(xiàn)出版社,2008:162-196
[4]莫平,黃瑞國(guó).《大學(xué)計(jì)算機(jī)基礎(chǔ)》教學(xué)方法深層探索[J].電腦知識(shí)技術(shù),2009,5(36):10415-10426