吳 波,蔣明燦,楊秀德,高欽翔
(1.遵義師范學(xué)院物理與機(jī)械工程學(xué)院,貴州 遵義 563002;2.遵義市第四中學(xué),貴州遵義 563000)
多媒體課件作為計(jì)算機(jī)輔助教學(xué)的主要載體給各學(xué)科的教學(xué)工作帶來了極大的便利,但是,傳統(tǒng)的線性和交互型課件由于演示性強(qiáng)、交互性弱、探究性差已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足輔助教學(xué)的要求。隨著國家新一輪課程標(biāo)準(zhǔn)的頒布,教學(xué)中更加注重培養(yǎng)學(xué)生的科學(xué)素養(yǎng)和創(chuàng)新精神,強(qiáng)調(diào)必須改變傳統(tǒng)的灌輸式教學(xué)方式為培養(yǎng)學(xué)生自主學(xué)習(xí)能力的探究模式,這必然對信息技術(shù)和學(xué)科的整合提出更高的要求。因此,全交互、智能化和探究型多媒體課件將是新一輪課改的一個(gè)重要的努力方向[1]。
全交互智能化課件是指使用者完全通過鍵盤、鼠標(biāo)、觸摸屏、光筆甚至聲音等方式,對學(xué)習(xí)內(nèi)容、學(xué)習(xí)步驟、學(xué)習(xí)速度自行選擇,并可根據(jù)交互事件的響應(yīng)能得到即時(shí)的反饋信息的新型課件。具體來說其主要有三個(gè)方面的特點(diǎn)[2]:
(1)全交互。即課件場景中對象能在用戶鼠標(biāo)、鍵盤操作下作出響應(yīng),能實(shí)現(xiàn)對操作對象的移動(dòng)、關(guān)聯(lián)、組合等動(dòng)作,并可以通過鼠標(biāo)、鍵盤事件響應(yīng)實(shí)現(xiàn)模擬實(shí)驗(yàn)等。
(2)智能化。即課件能科學(xué)地體現(xiàn)知識的內(nèi)在機(jī)理,對用戶的操作進(jìn)行跟蹤和反饋,并在合適的位置給予相應(yīng)的提示和評價(jià)。
(3)探究性。即課件能完全通過人機(jī)交互來模擬知識探索的全過程。學(xué)習(xí)者按照不同的途徑、條件、步驟和方法,觀察到相應(yīng)的實(shí)驗(yàn)現(xiàn)象,并在此基礎(chǔ)上對這些知識進(jìn)行探究,達(dá)到解決問題和獲取結(jié)論的目的。
全交互智能化課件對開發(fā)平臺提出了很高的要求,既要能模擬物理實(shí)驗(yàn)的真實(shí)環(huán)境,又要體現(xiàn)全交互、智能化和探究性。傳統(tǒng)的課件開發(fā)工具如Powerpoint、Authorware 很難達(dá)到這樣的要求,Macromedia公司開發(fā)的Flash是一個(gè)很好的選擇。首先Flash有豐富的圖形處理功能,便于制作各種實(shí)驗(yàn)物品和實(shí)驗(yàn)儀器;其次隨著其新版本的陸續(xù)推出,F(xiàn)lash更加注重腳本語言的發(fā)展,目前的ActionScript2.0和ActionScript3.0已是一種類似于Java的面向?qū)ο缶幊陶Z言,這為課件實(shí)現(xiàn)交互性、智能化和探究性提供了可能;另外,F(xiàn)lash是一種基于Web的開發(fā)平臺,豐富的數(shù)據(jù)接口和友好的運(yùn)行環(huán)境也為其廣泛推廣提供了可能。基于這些優(yōu)點(diǎn),F(xiàn)lash作為目前大紅大紫的網(wǎng)頁動(dòng)畫設(shè)計(jì)工具,用于開發(fā)當(dāng)前的全交互、智能化多媒體課件獨(dú)具潛力。
下面,我們將通過自制“彈簧振子”課件的實(shí)例,詳細(xì)介紹利用Flash平臺的ActionScript 2.0腳本語言,實(shí)現(xiàn)全交互智能型物理課件設(shè)計(jì)和開發(fā)的過程與方法。
(1)打開Flash軟件,新建Flash文檔,保存為“彈簧振子.fla”文件。設(shè)計(jì)實(shí)驗(yàn)演示初始場景:在舞臺上方設(shè)置課件標(biāo)題為“彈簧振子”,使用繪圖工具繪制小球、彈簧等圖片素材。
(2)鼠標(biāo)交互控制:分別將小球和彈簧圖片轉(zhuǎn)為小球和彈簧影片剪輯,創(chuàng)建“彈簧振子”運(yùn)動(dòng)動(dòng)畫。通過Flash腳本語言編程,實(shí)現(xiàn)鼠標(biāo)對小球的拖放和相應(yīng)彈簧的拉伸和壓縮,要求鼠標(biāo)釋放后,小球會在鼠標(biāo)釋放處獲取彈簧和小球的位置參數(shù),自動(dòng)使得小球在此彈簧回復(fù)力的作用下作簡諧振動(dòng),觀察到無阻尼運(yùn)動(dòng)的模擬簡諧振動(dòng)現(xiàn)象。
(3)鍵盤交互控制:新建兩個(gè)輸入文本,用于輸入小球質(zhì)量和彈簧系數(shù)的值,演示中使用者可根據(jù)需要改變文本框輸入值,程序?qū)⑼巾憫?yīng)這個(gè)輸入操作,實(shí)現(xiàn)輸入值與“彈簧振子”動(dòng)畫的動(dòng)態(tài)交互。
(4)屏幕輸出交互:對小球所受到的回復(fù)力、位移、速度、加速度以及動(dòng)能與勢能等物理量通過文本框、圖形等形式進(jìn)行動(dòng)態(tài)顯示,以幫助使用者實(shí)時(shí)了解這些物理量的變化關(guān)系。具體在此課件設(shè)計(jì)中,分別用四個(gè)長度、方向不斷變化的箭頭來模擬小球所受到的回復(fù)力、位移、速度、加速度,箭頭的長度反映了該物理量的大小,箭頭的指向代表了該物理量的方向;動(dòng)能和勢能的轉(zhuǎn)化用兩個(gè)長度不斷變化的矩形表現(xiàn),矩形的長度分別代表了兩者能量的大小。
(5)全局控制:設(shè)置“停止”、“繼續(xù)”和“返回”三個(gè)控制按鈕,實(shí)現(xiàn)控制課件動(dòng)畫的演示運(yùn)行和返回初始狀態(tài)。
(6)輔助設(shè)計(jì):在演示場景舞臺左下角處給使用者提供課件演示的“操作說明”。
(7)輸出和平臺轉(zhuǎn)移:測試和發(fā)布影片,并保存為“彈簧振子.swf”影片文件,也可以輸出為“.exe”可執(zhí)行文件,用于各種教學(xué)環(huán)境之中。
按照設(shè)計(jì)思路要求進(jìn)行制作,本課件實(shí)驗(yàn)演示場景設(shè)計(jì)界面如圖1所示。
圖1 課件實(shí)驗(yàn)演示場景界面
“彈簧振子”課件全交互設(shè)計(jì)主要是通過鼠標(biāo)和鍵盤兩種交互操作方式,完全利用Flash Action-Script2.0腳本語言編程來實(shí)現(xiàn)。
3.3.1 鼠標(biāo)交互
(1)拖拽交互
在網(wǎng)上經(jīng)??吹紽lash影片中有的對象可以被鼠標(biāo)進(jìn)行拖動(dòng)。例如類似七巧板的拼圖游戲,控制音量的滑桿等,所使用的就是Flash中的拖拽動(dòng)作。上述設(shè)計(jì)思路(2)也是利用Flash影片剪輯實(shí)例的拖拽命令來實(shí)現(xiàn)的。
圖2 鼠標(biāo)拖動(dòng)小球釋放后的實(shí)驗(yàn)演示現(xiàn)象
操作步驟:
1)打開“彈簧振子.fla”Flash文檔,在演示場景舞臺上繪制一個(gè)小球,選中小球并按F8,將此轉(zhuǎn)換為影片剪輯,命名為xq,確定后將會在舞臺上創(chuàng)建一個(gè)小球的實(shí)例。
2)選中此實(shí)例,并按F9打開動(dòng)作面板,輸入如下腳本:
on(press){
startDrag("",true,-220,-8,275,-8);//當(dāng)鼠標(biāo)按下之后,小球在水平方向處于被拖拽狀態(tài)
_root.xingbian1.play();
_root.xingbian2.gotoAndStop(1);
}
on(release){
stopDrag();
//當(dāng)鼠標(biāo)釋放之后,將停止小球拖拽動(dòng)作
_root.xingbian1.gotoAndStop(1);
_root.xingbian2.play();
}
上述代碼中xingbian1和xingbian2是鼠標(biāo)“按下”和“釋放”xq影片剪輯實(shí)例事件后,響應(yīng)小球和彈簧同步運(yùn)動(dòng)動(dòng)畫的兩個(gè)代碼影片實(shí)例,其程序代碼見后面描述。
(2)按鈕交互
按鈕交互是實(shí)現(xiàn)課件交互最常用的一中交互操作方式。按鈕是Flash動(dòng)畫的基本元件之一,通過對它的設(shè)置可以實(shí)現(xiàn)場景的播放、停止、快進(jìn)、快退、暫停、跟隨[3]等操作。上述設(shè)計(jì)思路(5)就是利用Flash按鈕實(shí)例的命令來實(shí)現(xiàn)對“彈簧振子”動(dòng)畫進(jìn)行人機(jī)交互的。具體操作步驟是:
1)在演示場景舞臺上創(chuàng)建“停止”、“繼續(xù)”和“返回”三個(gè)按鈕元件,分別命名為tz、jx和fh。
2)依次選中這三個(gè)按鈕實(shí)例,并按F9打開動(dòng)作面板,分別輸入如下腳本:
停止按鈕:
on(release){
_root.xingbian1.gotoAndStop(1)
_root.xingbian2.stop();//演示停止
}
繼續(xù)按鈕:
on(release){
_root.xingbian1.gotoAndStop(1)
_root.xingbian2.play();//演示繼續(xù)
}
返回按鈕:
on(release){
_root.xingbian1.gotoAndStop(1);
_root.xingbian2.gotoAndStop(1);
_root.gotoAndStop(1);
//返回初始狀態(tài)
_root.huang._width=269;_root.xq._x=37;
//小球和彈簧返回初始位置
_root.biao1._visible =0;_root.biao2._visible =0;_root.biao3._visible=0;
_root.wll._visible=false;_root.ljt0._visible=false;_root.ljt._visible=false;
_root.wjt0._visible=false;_root.wjt._visible=false;_root.sjt0._visible=false;
_root.sjt._visible=false;_root.ajt0._visible=false;_root.ajt._visible=false;
_root.dn._visible=false;_root.jxn._visible=false;
//模擬回復(fù)力、位移、速度、加速度箭頭和能量矩形與坐標(biāo)參考線設(shè)置為不可見
}
3.3.2 鍵盤交互
以上影片拖拽和按鈕交互都是通過利用鼠標(biāo)點(diǎn)擊或釋放等來實(shí)現(xiàn)對課件的交互。此外,鍵盤交互也是常用方式。課件使用者通過鍵盤輸入指定信息后,對相應(yīng)事件作出響應(yīng),從而達(dá)到實(shí)現(xiàn)課件交互的目的。上述設(shè)計(jì)思路(3)和(4)就是利用鍵盤輸入命令和在課件制作中采用“三幀法”[4]來實(shí)現(xiàn)的。
本課件的鍵盤交互主要是使用者可根據(jù)具體需要,改變小球質(zhì)量和彈簧彈性系數(shù)兩個(gè)文本框輸入值,實(shí)現(xiàn)“彈簧振子”動(dòng)畫的同步響應(yīng)與動(dòng)態(tài)交互。其交互效果如圖2~圖4所示。
圖3 改變彈簧彈性系數(shù)后的實(shí)驗(yàn)演示現(xiàn)象
圖4 改變小球質(zhì)量后的實(shí)驗(yàn)演示現(xiàn)象
圖5 彈簧彈性系數(shù)和小球質(zhì)量同時(shí)改變后的實(shí)驗(yàn)演示現(xiàn)象
操作步驟:
1)在演示場景舞臺上創(chuàng)建兩個(gè)代碼影片剪輯元件,分別命名為xingbian1和xingbian2。xingbian1影片剪輯的作用是用來記錄鼠標(biāo)釋放小球時(shí)的狀態(tài)(包括位移、回復(fù)力和加速度等),xingbian2影片剪輯的作用是用來實(shí)現(xiàn)鼠標(biāo)釋放小球后的運(yùn)動(dòng)動(dòng)畫。
2)分別進(jìn)入兩個(gè)影片剪輯的圖層中,在時(shí)間軸上都添加為三幀關(guān)鍵幀,在每幀關(guān)鍵幀上依次按下F9打開動(dòng)作面板輸入腳本,在兩個(gè)影片剪輯的三幀關(guān)鍵幀中分別輸入如下腳本:
Xinbian1影片剪輯:
第一幀:stop();i=0;
第 二 幀 :i=_root.xq._x;x0=37;w=269;_root.huang._width=w+i-x0;A=i-x0;
第三幀:gotoAndPlay(2);//同步循環(huán)第二幀
xinbian2影片剪輯:
第一幀:stop();A=0;t=0;
第二幀:k=_root.k;//彈性系數(shù) m=_root.m;//小球質(zhì)量 t=t+0.5;//時(shí)間變量
T=Math.PI*2*Math.sqrt(m/k);//周期 A=_root.xingbian1.A;//振幅
x=_root.xq._x;//小球位置 x10=Math.a(chǎn)bs(x-37);
w=Math.sqrt(k/m);//角頻率
if(A>225 or A<-225){
_root.xq._x=37+A;_root.huang._width=269+A;
_root.ljt0._visible=false;_root.ljt._visible=false;
_root.wjt0._visible=false;_root.wjt._visible=false;
_root.sjt0._visible=false;_root.sjt._visible=false;
_root.a(chǎn)jt0._visible=false;_root.a(chǎn)jt._visible=false;
_root.dn._visible=false;_root.jxn._visible=false;
_root.biao1._visible=false;_root.biao2._visible=false;_root.biao3._visible=false;
//發(fā)生泛性形變,即小球拉伸或壓縮到超出彈簧發(fā)生彈性形變范圍
}else{
_root.xq._x=37+A*Math.cos(Math.sqrt(k/m)*t);
_root.huang._width=269+A*Math.cos(Math.sqrt(k/m)*t);
_root.ljt0._visible=true;_root.ljt._visible=true;
_root.wjt0._visible=true;_root.wjt._visible=true;
_root.sjt0._visible=true;_root.sjt._visible=true;
_root.a(chǎn)jt0._visible=true;_root.a(chǎn)jt._visible=true;
_root.dn._visible=true;_root.jxn._visible=true;
_root.biao1._visible=true;_root.biao2._visible=true;_root.biao3._visible=true;
//發(fā)生彈性形變,即小球作簡諧振動(dòng)
if(x>=37){
_root.ljt0._rotation=180;_root.ljt._rotation=180;_root.ljt0._x=37;
_root.ljt0._width=k*x10;_root.ljt._x=_root.ljt0._x-_root.ljt0._width;
}else{
_root.ljt0._rotation=0;_root.ljt._rotation=0;_root.ljt0._x=37;
_root.ljt0._width=k*x10;_root.ljt._x=_root.ljt0._x+_root.ljt0._width;
} //模擬“力”
if(x>=37){
_root.wjt0._rotation=0;_root.wjt._rotation=0;_root.wjt0._x=37;
_root.wjt0._width=x10;_root.wjt._x=_root.wjt0._x+_root.wjt0._width;
}else{
_root.wjt0._rotation=180;_root.wjt._rotation=180;_root.wjt0._x=37;
_root.wjt0._width=x10;_root.wjt._x=_root.wjt0._x-_root.wjt0._width;
}//模擬“位移”
a=(k*x10)/m;
if(x>=37){
_root.a(chǎn)jt0._rotation=180;_root.a(chǎn)jt._rotation=180;_root.a(chǎn)jt0._x=37;
_root.a(chǎn)jt0._width=a;_root.a(chǎn)jt._x=_root.a(chǎn)jt0._x-_root.a(chǎn)jt0._width;
}else{
_root.a(chǎn)jt0._rotation=0;_root.a(chǎn)jt._rotation=0;_root.a(chǎn)jt0._x=37;
_root.a(chǎn)jt0._width=a;_root.a(chǎn)jt._x=_root.a(chǎn)jt0._x+_root.a(chǎn)jt0._width;
}//模擬“加速度”
v=-A*w*Math.sin(w*t);v10=Math.a(chǎn)bs(v);
if(v>=0){
_root.sjt0._rotation=0;_root.sjt._rotation=0;_root.sjt0._x=37;
_root.sjt0._width=v10;_root.sjt._x=_root.sjt0._x+_root.sjt0._width;
}else{
_root.sjt0._rotation=180;_root.sjt._rotation=180;_root.sjt0._x=37 ;
_root.sjt0._width=v10;_root.sjt._x=_root.sjt0._x-_root.sjt0._width;
}//模擬“速度”
_root.jxn._width=m* (-A)*(-A)*w*w/2;_root.jxn._x=37-_root.jxn._width;
_root.dn._width=m*v*v/2;_root.dn._x=_root.jxn._x;
_root.biao2._x=37;_root.biao1._x=37-Math.a(chǎn)bs(A);
_root.biao3._x=37+Math.a(chǎn)bs(A);
_root.biao1._y =_root.biao2._y;_root.biao3._y =_root.biao2._y;
}//模擬“動(dòng)能”、“勢能”和“機(jī)械能”
第三幀:gotoAndPlay(2);//同步循環(huán)第二幀
當(dāng)然,除鼠標(biāo)和鍵盤交互外,實(shí)現(xiàn)課件交互的方式還有其它,如觸摸屏交互、聲音交互等。順便提及,以上鼠標(biāo)和鍵盤交互的實(shí)現(xiàn)ActionScript2.0腳本都是編寫在對象本身上面,注意的是ActionScript2.0腳本也可編寫在時(shí)間軸的關(guān)鍵幀上,只不過這兩種編寫方法都要遵循一定的規(guī)則。第一種AS的編寫方法:把腳本寫在對象本身,書寫規(guī)則是:on(事件){statements;//要執(zhí)行的腳本程序};第二種按鈕AS的編寫方法:把腳本程序?qū)懺跁r(shí)間軸上,遵循的規(guī)則為:實(shí)例名.事件=function(){statements;//要執(zhí)行的腳本程序}[5]。此外,按鈕和影片剪輯有八種事件,我們經(jīng)常用的是“按”(press)事件和“釋放”(release)事件。它們的區(qū)別在于“按”事件是當(dāng)鼠標(biāo)左鍵按下執(zhí)行,而“釋放”事件是在鼠標(biāo)左鍵按下后再釋放時(shí)執(zhí)行,這些在課件制作中可根據(jù)實(shí)際需要作出選擇。
全交互智能化課件由于同時(shí)具有交互性、智能化和探究性的特點(diǎn),改變了學(xué)習(xí)者傳統(tǒng)的學(xué)習(xí)方式,有利于學(xué)習(xí)者對知識的自我建構(gòu),符合新課程標(biāo)準(zhǔn)對課件的設(shè)計(jì)理念,在傳統(tǒng)課件的基礎(chǔ)上向前邁出了一大步,為計(jì)算機(jī)輔助教學(xué)的發(fā)展提供了新的思路。在新一輪課程改革背景下,利用全交互智能化課件開展探究式物理教學(xué)將是培養(yǎng)學(xué)生科學(xué)素養(yǎng)和創(chuàng)新精神的有效途徑。但是,由于全交互智能化課件需要完全利用計(jì)算機(jī)語言編程實(shí)現(xiàn),制作難度較大,加上人們普遍還沒有從傳統(tǒng)課件的固有模式中解放出來,導(dǎo)致目前真正能達(dá)到全交互智能化要求的課件還很少,我們對它的認(rèn)識也還遠(yuǎn)遠(yuǎn)沒有達(dá)到應(yīng)有的深度。以上我們以Flash軟件為平臺,利用其自身ActionScript2.0腳本語言,設(shè)計(jì)和實(shí)現(xiàn)了全交互智能化物理課件,也只是作了一些嘗試和探討。對于全交互智能化課件的研究還需繼續(xù)深入下去,尤其是制作者應(yīng)在課件的交互性、智能化和探究性上多花工夫,多開發(fā)出一批高水平的產(chǎn)品[6]。全交互智能化課件必將在今后的教學(xué)活動(dòng)中大顯身手,對我國教育教學(xué)事業(yè)的發(fā)展產(chǎn)生積極深遠(yuǎn)的影響。
[1]何克抗.信息技術(shù)與課程深層次整合的理論與方法[J].電化教育研究,2005,(1):7-15.
[2]任建華,冉鳴.全交互智能化化學(xué)課件及實(shí)現(xiàn)方法淺析[J].化學(xué)教學(xué),2006,(9):47-49.
[3]莊文杰,李莎.基于Flash的課件交互功能的設(shè)計(jì)[J].軟件導(dǎo)刊(教育技術(shù)),2009,(4):81-82.
[4]吳波,楊秀德.利用Flash的Action Script實(shí)現(xiàn)三幀交互型物理課件的方法[J].遵義師范學(xué)院學(xué)報(bào),2008,(5):77-79.
[5]章精設(shè).Flash ActionScript2.0 編程范例導(dǎo)航[M].北京:清華大學(xué)出版社,2006.25-52.
[6]曾令院.也談 Flash 制作交互性課件[J].硅谷,2010,(2):40-40.