摘要:在Flash中適當的應用物理知識,可以使制作的動畫、游戲等更為逼真。很多真實的現象和情境也必須依靠數學、物理知識的支撐,才能夠在Flash制作中重現出來。本文即以彈跳的小球為例,闡述如何將物理知識應用到Flash編程中。文中詳細介紹了此動畫的制作原理和步驟,給廣大的愛好者和設計人員一定的啟示。
關鍵詞:Flash編程;物理知識;小球
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)08-10ppp-0c
1 引言
與其他動畫制作軟件相比,Flash的最大優勢在于其擁有強大的互動編輯功能。用戶不僅可以使用Flash制作出流暢的動畫,還可以利用Flash中的Action Script語言編輯制作出精彩的動畫特效、互動性極強的應用程序和功能完備的互聯網站……正因為Flash的這些特性,使得愛好者和學習者越來越多,創意不斷,從而也產生了越來越多的美麗和精彩的動畫。然而我們也逐漸發現在動畫和游戲制作過程中,有些現象和情景僅靠創意和技術是實現不了的,更需要一些物理和數學知識的支撐。比如轎車上坡、球在地上彈跳和星星沿著軸轉動等不利用物理學的理論是很難實現的。因此,我們應該在Flash編程過程中應用正確的物理定律來逼真地模擬任何彈跳、飛行、翻滾、滑行或非靜止的物體,以建立令人矚目且真實的游戲、動畫內容。本文中即以小球從高空落下,遇地后反彈再落下,重復進行,直至最終靜止這一客觀現象為例,闡述如何在Flash編程過程中應用物理知識使之真實再現。
2 實現方法
2.1 物理學中的相關公式
設物體運動過程中初速度為ν0,運動過程中任意時刻 時的瞬時速度為νt,加速度為α,位移為S,則有:
對于從高空落下的小球來講,我們忽略其下落過程受到的空氣阻力作用,將其下落過程視為自由落體運動,其初速度ν0 = 0,加速度α=g≈9.8m/s2,則以上兩個公式可以變換為:
2.2 實現步驟
下面我們則具體介紹小球彈跳的實現過程。
第一步,新建一個Flash文檔,大小為550*400,在舞臺中導入一個尺寸為50*50的小
球(亦可自己在舞臺中繪制),然后將其轉化為影片剪輯。
第二步,選中此影片剪輯,按F9進入動作面板,將小球的初始狀態作為其屬性,添加
代碼如下:
onClipEvent(load)
{
ballSpeedY=0;
gravity=9.8;
bouncing_floor=350;
bounce=0.9;
}
以上代碼表示當影片剪輯裝載時,小球相應的屬性便隨之確定,并不會發生改變。這一過程即是對小球的狀態進行初始化設置。小球下落的速度用ballSpeedY來表示,加速度gravity取9.8。為了確定小球的落地點,我們設置一個標志符bouncing_floor。由于文檔的高度為400,小球的高度為50,在Flash中x坐標軸向右為正方向,y坐標軸向下為正方向,原點位于舞臺左上角,標志物體位置時,默認為以物體的外接矩形左上角的點位準,因此,小球落地時,其y軸坐標為350,即設bouncing_floor=350。小球落體后會發生反彈,在此過程中有部分能量損耗,因此反彈系數設為bounce=0.9。
第三步,為小球添加運動代碼。由公式(1)可得,每過時間t,小球的速度ballSpeedY可記為:ballSpeedY+=gravity*t,為簡單起見,我們取t=1s,則ballSpeedY+=gravity。
由公式(2)變換可得:
lhy01.tif (5)
即小球的位置變化為this._y+=ballSpeedY-gravity/2。為防止最后一秒小球落至地面以下,因此需加以條件判斷。當小球落至地面以下時,需將小球位置,速度均重置為至地面位置,并使速度反向,為體現能耗作用,還需將其乘以反彈系數。小球落至地面時,其位置為this._y=bounce_floor,速度可根據公式(3)、(4)推算得出,若小球下落距離為 ,則落地時刻的速度ν為:
ν= ?2gh (6)
由此可得出小球落地時刻的速度F=Math.sqrt(2*gravity*(350-this._y))并將此語句添至第二步的onClipEvent(load)中。至此小球的運動過程已分析完畢,第三步的完整代碼為:
onClipEvent (enterFrame)
{
ballSpeedY+=gravity;
this._y=this._y+ballSpeedY-gravity/2;
if(this._y>=bounce_floor)
{
this._y=bounce_floor;
F*=bounce;
ballSpeedY=-F;
}
}
3 結束語
本文以簡單的小球彈跳過程為例,講解了物理知識在Flash編程中的應用方法。物理學在動畫和游戲制作中起著關鍵的作用,可以幫助你在游戲中模擬各種真實的現象,讓人產生身臨其境的感覺。在Flash制作過程中正確適當的運動物理知識,可有效提高作品中對象和動作的真實性,增強制作水平。
參考文獻:
[1]蘇風華.Flash8入門與實例教程[M].北京:電子工業出版社,2006.
[2]姜慧竹.“閃”出精彩——簡析Flash編程[J].中文信息:程序春秋,2002,(2).
[3]菲利普?科曼,陳冰.帶你走入Flash編程之門——評《Flash Action Script權威指南》[J].電腦知識與技術,2003,(13).
[4]尹小港. Flash8 Action Script交互特效設計108例[M].北京:中國青年出版社,2006.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”