盤俊春
很多教師會碰到這樣的問題,面對海量的網(wǎng)絡(luò)資源很難找到一個(gè)適合自己使用的課件。由于一般的課件如exe、swf等格式打包后都不能修改,教師很難增加自己的教學(xué)內(nèi)容,如何把課件做“活”,避免大量重復(fù)的工作,提高課件的制作效率呢?我認(rèn)為如果能夠利用“封裝”思想制作課件,經(jīng)過一段時(shí)間的積累,你會發(fā)現(xiàn)課件的制作效率大大提高。下面通過舉例,說明類“封裝”思想在Flash CS3課件制作中的應(yīng)用。
一、什么是類“封裝”
在Flash中,類(Class)定義為一類對象。類是描述對象的屬性(數(shù)據(jù))和方法(行為),這與描述建筑物特性的建筑藍(lán)圖相似??梢栽谕獠?ActionScript(AS)文件中編寫自定義類,并且在編譯fla文件時(shí)將其導(dǎo)入到應(yīng)用程序中?!胺庋b”(Encapsulation)指的是將實(shí)現(xiàn)的細(xì)節(jié)隱藏起來,只將必要的功能接口對外公開。舉個(gè)簡單的例子:使用DVD機(jī)時(shí),把DVD機(jī)的視頻輸出端和電視機(jī)輸入端用線連在一起就可以顯示圖像了,聲音也是一樣。但為什么會實(shí)現(xiàn)呢?這些細(xì)節(jié)我們并不知道。對使用者來說,也不需要知道。封裝就像DVD機(jī)一樣,只將必要的功能通過接口暴露,而不需要使用者知道內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)。
二、類“封裝”的好處
通過以上介紹,對類和封裝有了初步了解后,再來說說為什么要對課件進(jìn)行封裝。
1.“封裝”使修改和制作課件簡易化
利用類“封裝”制作課件,只要把能實(shí)現(xiàn)教學(xué)目標(biāo)的相關(guān)功能模塊組合起來,改改參數(shù)就行了。例如,想制作“函數(shù)的圖像”課件,可以用已經(jīng)“封裝”好的函數(shù)繪圖功能類,直接修改一下參數(shù),就可以很快繪制出自己想要的圖像了。
2.“封裝”將課件整體分解成相對獨(dú)立的單元
課件被分解成一個(gè)個(gè)相對獨(dú)立的單元后,易于修改和替換。最小的單元被認(rèn)為是單個(gè)的“類”(有些教師把最小單元稱為小積件、小課件)。例如本文將要介紹的“函數(shù)繪圖類”就是這樣的一個(gè)單元。我們把一個(gè)個(gè)小單元組合起來就可以形成一個(gè)完整的課件了。
3.“封裝”讓教師從制作課件的負(fù)擔(dān)中解脫出來
許多教師除了每周需要上近20節(jié)課之外,還有大量的管理工作。這也決定了教師不可能利用大量的時(shí)間去制作課件。此時(shí),要想高效地制作出適合自己的課件就相當(dāng)有現(xiàn)實(shí)意義了。如果每位教師都用“封裝”思想制作課件,然后再把自己的功能類小積件進(jìn)行共享,經(jīng)過一定時(shí)間的積累后,輕松制作出功能強(qiáng)大、交互性強(qiáng)的課件將不再是夢想。
實(shí)例:函數(shù)圖像類“封裝”
下面通過一個(gè)實(shí)例分析如何在Flash CS3課件制作中實(shí)現(xiàn)類“封裝”。如何定義一個(gè)新的類呢?Flash CS3和Flash8有些不同,例如:
package { //固定的格式,定義包
public class Hello { //定義類名
public function Hello() { //定義與類名同名的函數(shù)
trace("Hello!");
}
}
}
對于一般教師來說,類是高深莫測的一個(gè)名詞,初學(xué)者基本都不敢去接觸它。通過上例發(fā)現(xiàn),其實(shí)類也不是很復(fù)雜,主要有三層,包→類→函數(shù)。像package、class、public都是固定的關(guān)鍵字。
下面以繪制函數(shù)圖像類(二次函數(shù))為例,說明如何進(jìn)行類“封裝”,具體步驟如下。
(1)打開Flash CS3中文版,新建一個(gè)外部ActionScript文件(*.as),命名為“fun”,注意名稱一定要和代碼中的類名稱相同。
(2)進(jìn)入腳本編輯窗口,在窗口中輸入以下代碼:
package {
import flash.display.Sprite;//導(dǎo)入顯示類
public class fun extends Sprite {//定義名為“fun”的類
private var a:Number;
private var b:Number;
private var c:Number;//定義變量,分別是二次函數(shù)的三個(gè)系數(shù)
public function fun(a:Number=1,b:Number=1,c:Number=1) {
this.a=a;
this.b=b;
this.c=c;
init();
}//定義“fun”函數(shù)
public function init():void {
var func1=function(x){
return -0.05*a*x*x+b*x +c;
};//構(gòu)造二次函數(shù),其中-0.05只是把圖像放大,并使開口向上
graphics.lineStyle(1,0xff0000,100);
graphics.moveTo(-400 , func1(0));
for (var i=-400; i < 400; i++) {
graphics.lineTo( i, func1(i));
}//繪制二次函數(shù)
}
}
}
輸入后保存退出。這段代碼對具有一定Flash編程能力的教師能理解,對一般教師來說,只要會使用就可以了。
(3)建立類后就可以使用了。新建一個(gè)Flash文檔,文檔屬性設(shè)置為默認(rèn),在Flash文檔中主場景的第一幀輸入代碼。
var a=new fun(1,1,1);//繪制一個(gè)二次函數(shù),系數(shù)都是1
a.x=300;
a.y=300;//設(shè)置圖像在舞臺中的位置
addChild(a);//把圖像添加到舞臺上
(4)把新建的Flash文檔文件和“fun”類放在同一個(gè)文件夾中,在Flash文檔中測試效果即可,效果如圖1所示。
(5)今后如果要制作一個(gè)新的課件,我們只要簡單修改數(shù)字和函數(shù)式,就可以輕松繪制出其他函數(shù)的圖像了,極大提高了課件制作的效率。例如,繪制一個(gè)三次函數(shù)圖像的時(shí)候,只要把類代碼中的二次函數(shù)式“-0.05*a*x*x+b*x+c”改成“-0.05*a*x*x+b*x*x+c*x”即可,如圖2所示。
當(dāng)然也可以通過“var a=new fun(1,1,1)”改變參數(shù),繪制出自己想要的圖像。
通過上例,成功實(shí)現(xiàn)了函數(shù)圖像類的“封裝”,它的接口是“var a=new fun(1,1,1)”,教師只要改動函數(shù)中的參數(shù)就可以實(shí)現(xiàn)想要的功能。
利用類“封裝”思想制作課件,將會減少工作量,不但可以簡單高效地制作課件,而且制作出的課件交互性也會增強(qiáng)。
(本文所用到的源程序網(wǎng)址:http://www.hzgz.net/pjc/類“封裝”思想在FlashCS3課件制作中的應(yīng)用.rar)
(作者單位:廣西賀州高級中學(xué))