邢 俊 李紅巖 周 霞 張海倫
(南京信息職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)與軟件學(xué)院,江蘇 南京210023)
Flash作為一款強(qiáng)大的動(dòng)畫(huà)制作工具,自面世以來(lái)就受到許多動(dòng)畫(huà)制作者的喜歡。ActionScript作為Flash的內(nèi)置語(yǔ)言,具有強(qiáng)大的交互功能,可以實(shí)現(xiàn)對(duì)動(dòng)畫(huà)流程的控制,動(dòng)畫(huà)中的元件的控制,并能制作出豐富的動(dòng)畫(huà)特效,并為動(dòng)畫(huà)添加交互性操作,大大地豐富了設(shè)計(jì)者的設(shè)計(jì)空間。因此Flash被廣泛的用于動(dòng)畫(huà)演示、課件、導(dǎo)航、游戲等領(lǐng)域。
Flash演示動(dòng)畫(huà)即是通過(guò)動(dòng)畫(huà)的形式全方位地對(duì)物品,事件或概念性理論地進(jìn)行生動(dòng)的展示或演示。便于人們更好地去理解和認(rèn)識(shí)。本文以一個(gè)隊(duì)列演示動(dòng)畫(huà)的制作,來(lái)講解ActionScript在演示動(dòng)畫(huà)制作中的應(yīng)用。
隊(duì)列是一種特殊的線性表,它只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作。進(jìn)行插入操作的端稱(chēng)為隊(duì)尾,進(jìn)行刪除操作的端稱(chēng)為隊(duì)首。隊(duì)列中沒(méi)有元素時(shí),稱(chēng)為空隊(duì)列。在隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將是最先被刪除的元素;反之最后插入的元素將是最后被刪除的元素,因此隊(duì)列又稱(chēng)為“先進(jìn)先出”(FIFO—first in first out)的線性表。
為了模擬出數(shù)據(jù)元素的入隊(duì)、出隊(duì)以及在隊(duì)列中的存儲(chǔ)狀況。可以在Flash中將數(shù)據(jù)元素制作成元件。利用ActionScript腳本語(yǔ)言,通過(guò)點(diǎn)擊按鈕來(lái)控制元件的移動(dòng)達(dá)到入隊(duì)、出隊(duì)的演示效果。除了元件的運(yùn)動(dòng)之外,為更好的說(shuō)明整個(gè)過(guò)程,在運(yùn)動(dòng)的不同時(shí)段添加文字性的說(shuō)明以及提示,并設(shè)置了相應(yīng)的音效效果。整個(gè)過(guò)程要求動(dòng)畫(huà)和用戶(hù)具有良好的交互性。
為模擬隊(duì)列的操作,首先假設(shè)待入隊(duì)、出隊(duì)的有四個(gè)元素,分別對(duì)應(yīng)四個(gè)控制元件A.B.C.D;針對(duì)元素的入隊(duì)、出隊(duì)兩類(lèi)操作分別對(duì)應(yīng)入隊(duì)、出隊(duì)兩個(gè)按鈕元件;另有一個(gè)重新播放按鈕元件用以控制該動(dòng)畫(huà)重播。在隊(duì)列模擬場(chǎng)景中,用戶(hù)將通過(guò)對(duì)按鈕元件的點(diǎn)擊來(lái)控制四個(gè)控制元件的出隊(duì)、入隊(duì)變化,同時(shí)對(duì)各個(gè)過(guò)程配合以適當(dāng)提示性文字及聲音,使整個(gè)隊(duì)列中各元素運(yùn)動(dòng)更易讓人理解。
依據(jù)上述設(shè)計(jì)思路,首先制作A.B.C.D四個(gè)數(shù)據(jù)元素元件,入隊(duì)、出隊(duì)、重新播放三個(gè)按鈕元件,文字提示元件若干,其次是場(chǎng)景元件cj,最后是按鈕聲音元件(back2.wav,warning.wav,click1.wav,moveon2.wav,next.wav,out click.wav)。
Flash場(chǎng)景大小設(shè)置為800*600,背景設(shè)置為白色,將之前制作完成的各個(gè)元件拖入到舞臺(tái)上,按照之前的整體設(shè)計(jì)部署并調(diào)整好他們的大小和位置關(guān)系。其中位置可通過(guò)元件屬性的x和y坐標(biāo)精確的定位,同時(shí)在“屬性”面板對(duì)有關(guān)實(shí)例命名:
將四個(gè)圖形元件 A、B、C、D 分別命名為 A、B、C、D; 三個(gè)按鈕入隊(duì)、出隊(duì)、重新播放分別命名為Rd、Cd、Restart;將各種元件按圖1進(jìn)行布局:
圖1 元件布局圖
ActionScript是Flash中內(nèi)嵌的腳本程序,使用ActionScript可以實(shí)現(xiàn)對(duì)動(dòng)畫(huà)流程以及動(dòng)畫(huà)中的元件的控制,從而制作出非常豐富的交互效果以及動(dòng)畫(huà)特效。從添加腳本的對(duì)象來(lái)分,ActionScript主要有以下幾種:為時(shí)間軸中的關(guān)鍵幀添加的腳本,為影片剪輯元件實(shí)例添加的腳本,為按鈕添加的腳本。
1.4.1 為按鈕添加腳本
當(dāng)點(diǎn)擊 “入隊(duì)”控制按鈕后,A元素需要進(jìn)行入隊(duì)操作到達(dá)0位置。因此必須在入隊(duì)按鈕上添加相應(yīng)的ActionScript腳本。
先右擊入隊(duì)按鈕元件,在彈出的菜單中單擊動(dòng)作命令。彈出現(xiàn)動(dòng)作添加窗體,如圖2所示。
圖2 動(dòng)作添加窗體
最后將代碼鍵入便可。
1.4.2 onEnterFrame函數(shù)的運(yùn)用
為了使A元件緩慢地移動(dòng)至0位置。
實(shí)現(xiàn)方法如下:利用函數(shù)onEnterFrame。
onEnterFrame是循環(huán)執(zhí)行的意思。當(dāng)你需要一個(gè)動(dòng)作不斷循環(huán)重復(fù)發(fā)生的時(shí)候,就要用到它。onEnterFrame函數(shù)的加入使原先瞬間移動(dòng)的A元件的移動(dòng)過(guò)程,變得緩慢起來(lái)。令整個(gè)動(dòng)畫(huà)變得更加的有視覺(jué)感。
1.4.3 變量和條件語(yǔ)句的結(jié)合運(yùn)用
利用變量和條件的語(yǔ)句if…else…可使在不同情況下點(diǎn)擊“入隊(duì)”控制按鈕,使相應(yīng)的元素達(dá)到正確的入隊(duì)位置。
當(dāng)然為了實(shí)現(xiàn)入隊(duì)和出隊(duì)的良好配合,代碼中還需要添加swither,i,j等變量,通過(guò)對(duì) swither進(jìn)行 true或 false的賦值,來(lái)使得按單擊出隊(duì)后單擊入隊(duì)按鈕仍能正確執(zhí)行出隊(duì)操作。因?yàn)殛?duì)列的出入隊(duì)原則是按照先入先出的原則。所以入隊(duì)和出隊(duì)的操作可以看作是兩個(gè)獨(dú)立的事件。只要單獨(dú)的記錄下進(jìn)行了幾次入隊(duì)和幾次出隊(duì)操作就行了。分別用i,j來(lái)記錄。當(dāng)然還需要設(shè)置邊界條件,在隊(duì)列中沒(méi)有元素的時(shí)候是不能進(jìn)行出隊(duì)操作的。
為使動(dòng)畫(huà)更為完美,并能從聽(tīng)覺(jué)上進(jìn)一步給出提示,還增加了按鈕聲音元件。實(shí)現(xiàn)將事先選好的聲音導(dǎo)入到庫(kù)中步驟如下:在雙擊需要添加聲音的按鈕,為使得圖層含義更為明朗,將原有放置聲音的圖層重新命名為按鈕。并新建一個(gè)圖層取名為按鈕聲音。并在按鈕和按鈕聲音層分別插入4個(gè)關(guān)鍵幀。選中按鈕聲音圖層,彈起下面的關(guān)鍵幀。然后將庫(kù)中彈起動(dòng)作相對(duì)應(yīng)的聲音元件拖入場(chǎng)景中便可以了。指針停留,按下,點(diǎn)擊操作類(lèi)似。如圖3所示:
圖3 添加聲音界面
在本演示動(dòng)畫(huà)的制作的過(guò)程中,通過(guò)對(duì)swither,i,j等變量的賦值和大量的條件判斷語(yǔ)句if…else..,使得用戶(hù)可以依據(jù)自己的想法任意的進(jìn)行出隊(duì)和入隊(duì)的操作;對(duì)元件進(jìn)行了大量的橫縱坐標(biāo)的變化,來(lái)達(dá)到元件移動(dòng)的目的;運(yùn)用了函數(shù)onEnterFrame,讓元件得以緩慢的移動(dòng),使整個(gè)過(guò)程更具動(dòng)畫(huà)感;為了顯示提示語(yǔ)句還用到了flash的動(dòng)態(tài)文本。Flash腳本語(yǔ)言的加入,改變了動(dòng)畫(huà)順序逐幀播放的原貌,使得動(dòng)畫(huà)具備了交互、思考、答疑等功能,做到了動(dòng)畫(huà)和用戶(hù)之間的交互。讓抽象的理論概念通過(guò)Flash動(dòng)畫(huà)演示生動(dòng)的表現(xiàn)出來(lái),用戶(hù)自由通過(guò)按鈕來(lái)控制動(dòng)畫(huà)的播放,進(jìn)而更好地去理解和把握。
[1]章精設(shè),繆亮,白香芳.Flash ActionScript 2.0編程技術(shù)教程[M].清華大學(xué)出版社,2005.
[2]繆亮,賈朝蓉.Flash MX2004課件制作百例[M].清華大學(xué)出版社,2004.
[3]韓文虹,張巍.Flash腳本在多媒體課件開(kāi)發(fā)中的應(yīng)用[J].