☆ 王巨朝
(霍城二中,新疆霍城 835207)
Flash是一種應(yīng)用最廣泛的動(dòng)畫(huà)制作軟件,它的表現(xiàn)效果絢麗多彩,功能日趨強(qiáng)大,再加上它發(fā)布的文件體積小巧,使之成為教師制作動(dòng)畫(huà)的首選軟件。
我們?cè)谟肍lash軟件制作課件時(shí),經(jīng)常涉及到物體各種運(yùn)動(dòng)問(wèn)題,如直線運(yùn)動(dòng)、拋物線運(yùn)動(dòng)、圓周運(yùn)動(dòng)等。下面就如何用FlashAS3.0腳本語(yǔ)言實(shí)現(xiàn)物體的直線運(yùn)動(dòng)、斜線運(yùn)動(dòng)、拋物線運(yùn)動(dòng)、圓周運(yùn)動(dòng)、橢圓運(yùn)動(dòng)、正(余)弦運(yùn)動(dòng)等幾種常見(jiàn)運(yùn)動(dòng)的控制問(wèn)題進(jìn)行探討。
AS即ActionScript(動(dòng)作腳本)的簡(jiǎn)稱。在Flash中,用AS控制物體運(yùn)動(dòng)便于人機(jī)交互,實(shí)現(xiàn)許多補(bǔ)間動(dòng)畫(huà)所不能實(shí)現(xiàn)的功能,而且用AS編寫(xiě)的文件體積更小,更有利于課件的流暢運(yùn)行。隨著2005年Adobe公司對(duì)Macromedia公司的收購(gòu),為Flash的發(fā)展注入了強(qiáng)大的動(dòng)力,尤其是 ActionScript3.0的發(fā)布是ActionScript發(fā)展史上的一個(gè)里程碑,它實(shí)現(xiàn)了真正意義上的面向?qū)ο蟮木幊?。它摒棄了ActionScript2.0稍顯混亂的語(yǔ)法,完全以類(lèi)作為腳本程序設(shè)計(jì)的基礎(chǔ),使得編程更加規(guī)范,功能更加強(qiáng)大。
若要用AS控制物體的運(yùn)動(dòng),需要理解運(yùn)動(dòng)的含義。
從本質(zhì)上來(lái)講,所謂運(yùn)動(dòng),指物體位置隨時(shí)間變化。所以,要想實(shí)現(xiàn)物體的運(yùn)動(dòng),需要解決兩個(gè)問(wèn)題:一是時(shí)間的變化問(wèn)題;二是要確定不同時(shí)刻對(duì)應(yīng)的物體位置坐標(biāo)。對(duì)于時(shí)間問(wèn)題,一般是定義一個(gè)變量t,利用Event.ENTER_FRAME事件使t均勻增加,以此實(shí)現(xiàn)時(shí)間的變化。對(duì)于位置坐標(biāo),要根據(jù)物體運(yùn)動(dòng)形式來(lái)確定平面直角坐標(biāo)系中x坐標(biāo)與時(shí)間t的函數(shù)關(guān)系及y坐標(biāo)與時(shí)間t的函數(shù)關(guān)系。具體分析如下。
根據(jù)物理學(xué)知識(shí),物體做勻速直線運(yùn)動(dòng)時(shí),位移與時(shí)間的關(guān)系為:x=vt,做勻加速直線運(yùn)動(dòng)時(shí),位移與時(shí)間的關(guān)系為:x=vt+at2/2,如果物體在 x、y 兩個(gè)方向上都做勻速直線運(yùn)動(dòng),物體的合運(yùn)動(dòng)是斜方向上的勻速直線運(yùn)動(dòng);如果物體在x、y兩個(gè)方向上都做初速度為零的勻加速直線運(yùn)動(dòng),物體的合運(yùn)動(dòng)是斜方向上的勻加速直線運(yùn)動(dòng);如果物體在一個(gè)方向上是勻速直線運(yùn)動(dòng)而另一個(gè)方向是勻加速直線運(yùn)動(dòng),則物體的運(yùn)動(dòng)是拋物線運(yùn)動(dòng)。
根據(jù)此原理設(shè)計(jì)代碼如下:
其中,vx是物體在x方向上的速度,vy是物體在y方向上的速度,ax是物體在x方向上的加速度,ay是物體在y方向上的加速度,t是時(shí)間,從0開(kāi)始。
當(dāng)ax、ay全取零時(shí),物體做直線運(yùn)動(dòng),當(dāng)ax、ay中有一個(gè)取零時(shí),物體做拋物線運(yùn)動(dòng),這種運(yùn)動(dòng)形式可以用于平拋物體運(yùn)動(dòng)課件的制作。
用AS控制物體做正弦或余弦運(yùn)動(dòng)的道理同做直線運(yùn)動(dòng)的道理相同,所不同的是,物體在一個(gè)方向上是勻速直線運(yùn)動(dòng)而另一個(gè)方向按正弦或余弦規(guī)律運(yùn)動(dòng)。
具體代碼如下:
其中,v為x方向做勻速運(yùn)動(dòng)的速度,A為y方向上的振幅,ω 為物體做正弦(余弦)運(yùn)動(dòng)的圓頻率,它與正弦函數(shù)周期T的關(guān)系為ω=2π /T,x0、y0為物體開(kāi)始運(yùn)動(dòng)的起點(diǎn)坐標(biāo)。
代碼設(shè)計(jì)如下:
當(dāng)v=0時(shí),物體做簡(jiǎn)諧運(yùn)動(dòng)。若要讓物體按余弦規(guī)律運(yùn)動(dòng),只需要將代碼改為 mc.y=A*Math.cos(ω*t)+y0 即可。
正弦或余弦運(yùn)動(dòng)代碼可以用于簡(jiǎn)諧運(yùn)動(dòng)課件或波的形成與傳播課件的制作。
與直線運(yùn)動(dòng)及拋物線運(yùn)動(dòng)和正弦或余弦運(yùn)動(dòng)不同的是,圓周運(yùn)動(dòng)或橢圓運(yùn)動(dòng)的x、y坐標(biāo)用極參數(shù)方程表示比較方便。橢圓的極坐標(biāo)參數(shù)方程為:
根據(jù)原理設(shè)計(jì)代碼如下:
其中,a、b為橢圓的半長(zhǎng)軸與半短軸的長(zhǎng)度,當(dāng)a=b時(shí),物體做圓周運(yùn)動(dòng)。
圓周運(yùn)動(dòng)或橢圓運(yùn)動(dòng)代碼可用于數(shù)學(xué)中相關(guān)內(nèi)容的課件制作,也可用于物理中天體運(yùn)動(dòng)課件的制作。
下面以物理學(xué)中彈簧振子的制作為例來(lái)說(shuō)明。彈簧振子的運(yùn)動(dòng)是簡(jiǎn)諧運(yùn)動(dòng),所以,要用到第二類(lèi)代碼,即正弦和余弦類(lèi)運(yùn)動(dòng)代碼。
(1)首先運(yùn)行 FlashCS4.0(只要是 FlashCS3.0 以上版本都可以),在場(chǎng)景中做好兩個(gè)影片剪輯:彈簧和振子,將振子的實(shí)例名稱命名為“mc”,彈簧的實(shí)例名稱命名為“th”,并對(duì)場(chǎng)景做適當(dāng)布置(如圖1)。
圖1
(2)按F9打開(kāi)動(dòng)作面版,在專家模式下輸入以下動(dòng)作代碼:
其中,變量d是振子所能拖動(dòng)的最大寬度,rect是定義了一個(gè)矩形,用以限制振子的拖動(dòng)范圍。它的四個(gè)參數(shù)分別為矩形的頂點(diǎn)坐標(biāo)及矩形的寬和高。
制作完成后,同時(shí)按下“Ctrl”和“Enter”鍵測(cè)試影片,用鼠標(biāo)拖動(dòng)振子,松開(kāi)振子后,彈簧振子系統(tǒng)即開(kāi)始做標(biāo)準(zhǔn)的簡(jiǎn)諧運(yùn)動(dòng)。