設(shè)計(jì)內(nèi)容多、結(jié)構(gòu)復(fù)雜的大型課件,人們往往感到無從下手。這是因?yàn)槿狈σ环N系統(tǒng)、科學(xué)的設(shè)計(jì)力法。在規(guī)劃課件時(shí),我們應(yīng)根據(jù)課件內(nèi)容,將其分解為一個(gè)主控模塊和幾個(gè)功能模塊,再將功能模塊細(xì)化為幾個(gè)功能子模塊。主控模塊用來控制和調(diào)度各個(gè)功能模塊的播放,各個(gè)功能模塊具體實(shí)現(xiàn)相應(yīng)課件內(nèi)容的展示。這種化大為小,分而治之的模塊化設(shè)計(jì)方法,可以使課件的制作變得更容易。這就是結(jié)構(gòu)化、模塊化的程序設(shè)計(jì)方法。
本文主要從Flash課件導(dǎo)航結(jié)構(gòu)的實(shí)現(xiàn)來介紹這種結(jié)構(gòu)化、模塊化的思路。筆者經(jīng)過長期的研究和實(shí)踐,總結(jié)了四種方法。
一、幀跳轉(zhuǎn)法
將教學(xué)內(nèi)容分解成若干模塊,每個(gè)模塊制作成一個(gè)影片剪輯元件,將每個(gè)影片剪輯分別放在一個(gè)關(guān)鍵幀上,并用stop()函數(shù)控制影片剪輯不自動(dòng)播放。在交互按鈕上使用gotoAndStop()函數(shù)來控制影片的播放,從而實(shí)現(xiàn)課件內(nèi)容的交互控制。這種方法實(shí)現(xiàn)F1ash課件的圖層結(jié)構(gòu)清晰合理,容易修改(圖1)。
我們分析一下這種方法的設(shè)計(jì)思路。
假設(shè)將課件內(nèi)容分為3個(gè)功能模塊:引言、講解結(jié)論,并對(duì)每個(gè)模塊創(chuàng)建一個(gè)影片剪輯元件。課件的主控模塊在主場(chǎng)景中實(shí)現(xiàn),如圖1所示的圖層結(jié)構(gòu)。
在“課件模塊”圖層的第1幀,可以創(chuàng)建圖形元件,裝飾課件主界面。從第2幀到第4幀分別按F?添加空白關(guān)鍵幀,從“庫”面板中分別將3個(gè)課件功能模塊拖放到相應(yīng)的關(guān)鍵幀下,擺放好位置。
在“AS”圖層上,定義每個(gè)幀上的程序代碼為:stop( );
這樣可以保證每個(gè)影片剪輯不會(huì)自動(dòng)播放。
在“交互按鈕”圖層創(chuàng)建3個(gè)按鈕(按鈕上的文字分別是引言、講解、結(jié)論),分別用來控制課件各個(gè)功能模塊的交互跳轉(zhuǎn)。
“引言”按鈕上的程序代碼為:
on(release){//當(dāng)單擊并釋放按鈕時(shí)gotoAndStop(2);//跳轉(zhuǎn)并停止在第2幀“講解”按鈕上的程序代碼為on(release){
gotoAndStop(3);)
“結(jié)論”按鈕上的程序代碼為
onl(release){gotoAndStop(4)
這種方法代碼簡單、圖層結(jié)構(gòu)清晰,適合制作只包括一級(jí)課件功能模塊的導(dǎo)航結(jié)構(gòu)。如果課件內(nèi)容多,一級(jí)功能模塊下必須分解出二級(jí)功能模塊,使用這種方法就不太適合了。
二、attachMovio()函數(shù)法
“庫”中的影片剪輯元件不用拖放到場(chǎng)景中,可以用attachMovie()函數(shù)直接調(diào)用它們。把各課件功能模塊制作成影片剪輯元件,再利用attachMovie()函數(shù)來實(shí)現(xiàn)相互調(diào)用。
為課件內(nèi)容3個(gè)功能模塊分別創(chuàng)建一個(gè)影片剪輯元件,元件名稱分別為引言、講解,結(jié)論。
在“庫”面板中,右擊“引言”元件,在彈出的快捷菜單中選擇“鏈接”命令,彈出“鏈接屬性”對(duì)話框,在其中選擇“為動(dòng)作腳本導(dǎo)出”和“在第一幀導(dǎo)出”復(fù)選項(xiàng)(圖2)。這樣就定義了該元件的鏈接標(biāo)識(shí)符名稱為“引言”。按照同樣的方法定義其他兩個(gè)元件的鏈接標(biāo)識(shí)符名稱分別為“講解”和“結(jié)論”。這是非常重要的一個(gè)環(huán)節(jié), 因?yàn)殒溄訕?biāo)識(shí)符名稱是attchMovic()函數(shù)調(diào)用影片剪輯的基本參數(shù)。
課件的豐控模塊在主場(chǎng)景中實(shí)現(xiàn)。為使影片不自動(dòng)播放,在第1幀定義以下程序代碼:
stop();
單獨(dú)建一個(gè)圖層,設(shè)計(jì)導(dǎo)航按鈕:創(chuàng)建3個(gè)按鈕(按鈕上的文字分別是引言、講解、結(jié)論),分別用來控制課件各個(gè)功能模塊的交互跳轉(zhuǎn)。
“引言”按鈕上的程序代碼為:
on(release){ //當(dāng)單擊并釋放按鈕時(shí)
—root.a(chǎn)ttachMovie(“引言”,“yinyan",1)
//主時(shí)間軸加載鏈接標(biāo)識(shí)符名稱為“引言”的功能模塊,實(shí)例名為yinyan。
yinyan_x=90;
yinyan._y=98;
?。O(shè)置實(shí)例的坐標(biāo),使它能處在舞臺(tái)中央。這個(gè)坐標(biāo)可以通過“信息”面板得到。
)
修改上面代碼括號(hào)里的前兩項(xiàng)內(nèi)容,定義“講解”和“結(jié)論”兩個(gè)按鈕。
這種方法的優(yōu)點(diǎn)是不用將課件功能模塊放入舞臺(tái),簡化了圖層結(jié)構(gòu)。缺點(diǎn)是程序代碼稍微復(fù)雜一些,在制作過程中需要對(duì)程序進(jìn)行更仔細(xì)的調(diào)試。
三、場(chǎng)景跳轉(zhuǎn)法
這種方法是利用Flash的多場(chǎng)景技術(shù)設(shè)計(jì)的。一個(gè)Flash影片文件可以包括若干個(gè)場(chǎng)景、每個(gè)場(chǎng)景包含一個(gè)主時(shí)間軸。我們利用場(chǎng)景來組織課件中的各個(gè)課件模塊,不同的課件模塊放在不同的場(chǎng)景中實(shí)現(xiàn)。利用場(chǎng)景跳轉(zhuǎn)函數(shù)來實(shí)現(xiàn)各個(gè)課件模塊之間的導(dǎo)航(圖3)。
在“場(chǎng)景”面板添加場(chǎng)景??蓪?chǎng)景名稱定義為和課件模塊相符的名稱,便于實(shí)現(xiàn)場(chǎng)景的跳轉(zhuǎn)控制。場(chǎng)景跳轉(zhuǎn)函數(shù)就是通過場(chǎng)景名稱這個(gè)基本參數(shù)實(shí)現(xiàn)場(chǎng)景跳轉(zhuǎn)控制的。
根據(jù)課件內(nèi)容,在各個(gè)課件功能模塊場(chǎng)景中實(shí)現(xiàn)對(duì)應(yīng)的課件功能模塊內(nèi)容。
在課件主控模塊場(chǎng)景中,設(shè)計(jì)一個(gè)導(dǎo)航菜單,包括若干按鈕,與課件的功能模塊相對(duì)應(yīng),單擊導(dǎo)航菜單中的按鈕可以進(jìn)入相應(yīng)的課件功能模塊場(chǎng)景。在每個(gè)功能模塊場(chǎng)景也設(shè)計(jì)一個(gè)返回到主控模塊場(chǎng)景的按鈕。這些導(dǎo)航控制按鈕上的程序代碼的一般形式是:
on(release){
gotoAndPlay(“場(chǎng)景名稱”,1);) //當(dāng)單擊并釋放按鈕時(shí),跳轉(zhuǎn)到指定場(chǎng)景名稱的場(chǎng)景的第l幀播放。
這種方法的優(yōu)點(diǎn)是代碼簡單,結(jié)構(gòu)清晰,是一種典型的多模塊程序設(shè)計(jì)思路。每個(gè)課件功能模塊單獨(dú)占用一個(gè)場(chǎng)景,當(dāng)課件內(nèi)容多,具有二級(jí)功能模塊時(shí),這種方法也能應(yīng)付自如。
四、loadMouie()函數(shù)法
loadMovie()函數(shù)可以在一個(gè)SWF影片中加載外部的SWF影片。將課件分解為若干課件模塊(包括一個(gè)主控模塊和若干功能模塊),把每個(gè)課件模塊制作成獨(dú)立的Flash影片,最后利用loadMovie()函數(shù)實(shí)現(xiàn)各個(gè)課件模塊間的相互調(diào)用,實(shí)現(xiàn)模型如圖4。
根據(jù)課件內(nèi)容,將各個(gè)課件功有模塊制作成獨(dú)立的Flash影片,并導(dǎo)出相應(yīng)的SWF文件。
課件主控模塊也制作成獨(dú)立的Flash影片,主要設(shè)計(jì)一個(gè)導(dǎo)航菜單。導(dǎo)航菜單由若干按鈕組成,按鈕與課件的功能模塊相對(duì)應(yīng)。單擊導(dǎo)航菜單中的按鈕可以載入相應(yīng)的課件功能模塊SWF影片。在每個(gè)功能模塊影片中也設(shè)計(jì)一個(gè)返回到主控模塊影片的按鈕。這些導(dǎo)航控制按鈕上的程序代碼的一般形式是:
on(release){IoadMovie(“URL”,level);}//當(dāng)單擊解釋放按鈕時(shí),加載指定的SWF影片
URL:設(shè)置加載的SWF文件的絕對(duì)路徑或相對(duì)路徑。一般這里都是使用相對(duì)路徑,也就是直接用SWF文件名替代這個(gè)參數(shù)。這時(shí),必須讓多個(gè)SWF文件(主控模塊和若干功能模塊)都存放在相同的文件夾下。
level(級(jí)別):用于設(shè)置將動(dòng)畫加載到哪一級(jí)界面上。在Flash播放器中,按照加載的順序,影片文件被編上了號(hào)。第一個(gè)加載的影片將被放在最底層(0級(jí)界面)上,以后載入的影片放在0級(jí)以上的界面中。例如,我們?cè)谝粋€(gè)主影片中利用下面的程序代碼加載另一個(gè)影片:
IoadMovie(“概述.swf”,O);
這個(gè)函數(shù)將要加載的“概述.swf“的級(jí)別設(shè)置為O。由于主影片默認(rèn)的也在。級(jí)別上,所以被加載的影片將取代原來。級(jí)別上的主影片文件。如果把加載的影片的級(jí)別定義為l:
IoadMovie(“概述.swf”,1);
則。級(jí)別上的主影片不會(huì)被加載的影片取代,兩個(gè)影片會(huì)同時(shí)存在,一個(gè)在。級(jí)別上,另一個(gè)在1級(jí)別上。當(dāng)不想讓加載進(jìn)來的影片將主控影片中的導(dǎo)航菜單覆蓋時(shí),可以采用這種級(jí)別設(shè)置。
loadMovie()函數(shù)中的level參數(shù)對(duì)設(shè)計(jì)課件導(dǎo)航結(jié)構(gòu)很重要。實(shí)際工作中要根據(jù)具體的導(dǎo)航實(shí)現(xiàn)思路來設(shè)置level參數(shù),從而確定被加載的影片是否覆蓋原有的影片。
這種方法的優(yōu)點(diǎn)是,課件既較好地實(shí)現(xiàn)了模塊化課件設(shè)計(jì)的思想,又使課件具備了很強(qiáng)的網(wǎng)絡(luò)特性。因?yàn)檫@種類型的課件在播放時(shí),并不把全部的課件模塊都裝載到計(jì)算機(jī)的內(nèi)存中,只先裝載課件的主控模塊,需要時(shí)再在課件主控界面上單擊控制按鈕,把其他的課件模塊裝載運(yùn)行。這種方法很適合制作網(wǎng)絡(luò)型Flash課件,具有廣闊的應(yīng)用前景。
實(shí)踐證明,模塊化程序設(shè)計(jì)思想運(yùn)用到課件制作中,使課件制作過程科學(xué)化、系統(tǒng)化。本文討論的四種方法不同程度地實(shí)現(xiàn)了Flash課件制作模塊化的設(shè)計(jì)思路。這四種方法叫,以單獨(dú)使用,也可以混合使