于洪
(海南熱帶海洋學院,海南三亞 572022)
Flash是Macromedia公司推出的一款集動畫創(chuàng)作與應用程序開發(fā)于一體的創(chuàng)作軟件,設計人員或開發(fā)人員可使用它來創(chuàng)建演示文稿、應用程序和其他允許用戶交互的內容。它可以包含動畫、視頻、音頻、復雜演示文稿和應用程序以及介于它們之間的任何內容。由于采用了矢量動畫和元件,使得它的存貯空間可以很小。用它編輯的程序可生成可執(zhí)行文件(文件擴展名為.swf),它即可在Flash播放器中播放,也可以在瀏覽器中播放,應用面非常廣[1]。
小學生由于具體的直接經驗不足,有些較為抽象的內容難以理解。利用Flash制作的課件由于具有聲畫并茂、交互性強等優(yōu)點,可以彌補學生直接經驗不足的缺點,所以被越來越多的小學老師所接受,廣泛地應用于課堂教學和學生自學等多方面。在教學實踐中,要想掌握好flash的交互,必須在兩方面有較深地理解:一是層;二是元件。這兩方面是課件中必然要用到的,對它們進行深入學習對做一個優(yōu)良的課件有著很大的幫助。在Flash中層有三種:一般層、引導層和遮罩層。Flash在播放時是按幀的順序來播放的,有些時候我們希望多幀的內容同時顯示出來(這在交互菜單中是多見),所以多層這時候就一定要用到了,在一般的程序設計中,時間線上的一般層都是會出現(xiàn)多層的,更不要說要加入遮罩、引導等內容了,這會需要更多的層來完成程序。另外在交互中還常用到的是元件,它很像我們小時候玩的搭積木,元件就是一塊塊事先準備好的積木,我們只要把它們一塊塊拼裝起來就行了[2]。它也有三種:圖形元件、按鈕元件和電影片斷元件。我們常可以把一小段執(zhí)行程序編成電影片斷元件,然后利用腳本來調用,這樣程序的流程更清晰明了,可讀性更強。Flash腳本應用JavaScript2.0,JavaScript是ECMAScript腳本語言的一個分支。這版軟件更適合非計算機類的人員學習和應用,更容易理解,它功能更強大,特別適合在交互式的多媒體教學軟件中應用。
我們利用flash菜單中的Insert菜單中的New Symbol制作按鈕,按鈕的形狀我們可以隨意制作,并在里面寫上“按鈕”兩個字。在第一幀我們將菜單按鈕引入,并在此幀的腳本(Actions-frame)上寫stop();命令。當程序運行時由于第一幀有停止命令,程序會停在此幀。然后增加一層,在第二幀增加關鍵幀,然后在此關鍵幀上畫一小塊,然后在此層十幀畫一拉長的小塊。將第二幀和第十幀的小塊打散,然后做形變動畫。注意在形變動畫的幀腳本中最后一幀要加入stop();命令。然后我們在這一層把前面這一段形變動畫再反著做一個,也就是收回去的形變動畫。在第一層的第一幀的按鈕命令(Actions-buttom)上添加腳本on(press){gotoAndPlay(形變伸出開始的幀數(shù));}和on(rollOut){gotoAndPlay(形變回收開始的幀數(shù));}。于是就出現(xiàn)了一開始有一個菜單,單擊之后會伸出一塊區(qū)域,然后我們再新加一層,然后在新加的層中拉升的小塊的幀上可以放入新的按鈕,按鈕上可以用腳本寫入跳轉的幀上。這樣一來,一個伸縮式菜單就做好了,這里一定要注意開始的菜單按鈕和變形的小塊和跳轉的按鈕一定要分在不同的層中,這樣才能實現(xiàn)我們的要求。因為分了層之后,你希望哪一層的內容出現(xiàn)多長時間就可以通過添加一般幀的辦法得以實現(xiàn)。這還得注意一點,多層雖然在顯示時上面一層會蓋住下面的一層,但是下面一層的按鈕還是可以控制的,所以在上面畫出按鈕的形狀,則打開和關閉時會更好看,但只要下面一層是按鈕,其按鈕功能還是正常使用的。我們一般是先將下面一層的按鈕畫在合適的位置,一切調好之后只要在控制區(qū)將上一層時間線拉到下一層即可。如圖1:

圖1 伸縮式菜單
Flash能夠制作有流動效果的程序,這離不開遮罩技術的運用。由于有了遮罩技術,一些我們無法想象的功能可以得到開發(fā),比如我們的這個流水程序。在最底層,我們放入一個有瀑布的畫面,中間是流水,兩邊是山和樹木。但這只是一張靜止的圖片,怎么能讓它看起來有流水的感覺呢?我們添加一層,把剛才那一層的圖片復制在這一層,并且位置在高低上要稍微有一點變化,不能放在同一個位置,但也不要移動太多。然后打散該層,利用橡皮工具把除了瀑布中水之外的內容全部刪除,只剩下流水的畫面。然后我們再增加一層,在這一層中我們利用刷子工具畫一些波紋線,線條的顏色、形狀基本不用考慮太多,因為一會兒它要被作為遮罩,這些也看不見了。這里要注意的是要畫的波紋要是水的高度的一倍,這樣一會兒運行起來才會逼真。畫好波紋后,讓波紋的底邊與瀑布的底對齊,然后打散,制作一個移動動畫,讓波紋從上往下移動,當波紋的頂與瀑布的頂對齊時即可。然后我們把這一層做成遮罩。運行起來你就會看到水好像在流動一樣。如圖2:

圖2 流水效果
漢字的書寫順序非常重要,也是小學 語言教學中非常重要的一個方面。筆者作為中小學教師資格證面試的教官,在實踐活動中經常看到一些考生連基本的筆畫順序都是錯誤的。利用Flash的遮罩技術可以很好地把字的筆畫順序表現(xiàn)出來,對于小學的語言教學有很好的作用。我們都知道遮罩層只對時間線上遮罩層的下一層起作用,而再下幾層是不能遮住的。為了便于控制,我們將筆畫順序這個動畫做成電影片斷元件。利用Insert菜單中的New Symbol命令新建一個電影片斷元件。進入電影片斷元件后,我們先要在畫圖軟件上用紅色(這里顏色隨便)寫一個漢字,存盤。然后再把這個漢字改為另一種顏色存盤。我們就有了兩個顏色不同的兩個一模一樣的漢字圖畫了。這里一定要注意,在時間線上的漢字一定要用外面的圖畫,不能直接寫在程序的幀上,很多同學做不出筆畫運行的效果就是這個原因。利用導入將兩幅圖畫導入到庫中,在第一層將紅色字的圖畫導入到程序中來,新建一層,將另一種顏色的字也導入到幀中,并將位置調好,使上一層的字將下一層的字完全遮蓋好。然后再新建一層,這一層是用來做遮罩層的,在這一層中按照字的筆畫做一個形狀動畫,由于遮罩層的內容是看不到的,所以用什么顏色并不重要,注意的是粗細要調整好,因為它直接影響到顯示出來的內容的多少。按照字的筆畫順序,在這一層中每一個筆畫都做一個形狀動畫。做好之后將這一層設成遮罩層。此電影片斷做好之后就可以看到一個字按筆畫順序寫出來的過程。為了能控制筆畫的書寫,即我們命令它運行時它運行,但我們可以隨時命令它停下來,然后我們命令它運行時它能接著原來的部分運行。在電影片斷的第一幀和最后一幀我們加入幀命令stop()。這樣,當我們把元件拉入舞臺上作為實例時,運行時電影片段也不會自動運行。為了能自如地控制動畫的運行,我們先給電影片斷元件起一個別名,比如“筆劃”。然后我們在舞臺上加入兩個按鈕,一個負責筆畫運行,一個負責筆畫停止。然后在兩個按鈕中加入按鈕命令。負責筆畫運行的按鈕命令中寫入:on(release){筆畫.play();}。負責停止的按鈕在按鈕命令中寫入:on(release){筆畫.stop();}。于是一個可以隨意控制字的筆畫運行的小程序就設計好了。如圖3:

圖3 筆畫順序
對于電影片斷一般人都會用,它因為只需要在時間線上一個幀就能播放而被常用。但是如果能在程序運行過程中復制電影片斷,那對我們的程序就會起到很好的幫助作用。如下例,程序會自動出10以內的加法題,可是如果小朋友不會做,那我們可以出現(xiàn)具體的物體,讓小朋友來數(shù)一數(shù),加強他們的數(shù)學計算能力。如圖4:

圖4 復制電影片斷
當程序出題后,小朋友不會做,可以按幫助按鈕,于是在題目下邊就會出現(xiàn)加數(shù)和被加數(shù)的小鳥,小朋友可以通過數(shù)一數(shù)的辦法來知道結果。那如何在界面上出現(xiàn)和題目相同的個數(shù)的小鳥呢?
為了能自動復制出一定數(shù)量的圖片,首先將一個電影片斷的元件(這里可以只是個圖片)拉入場景中,但不要放在舞臺上,可以放入后臺。在放映時只有在舞臺上的內容才能被放映出來,而在后臺上的內容是不會被顯示出來的。我們在后臺放置一個圖片只是作為被復制的內容而已,它本身是不能顯示的。
因為我們要復制這個電影片斷實例,所以必須給這個元件起個名字,比如 y0。我們會發(fā)現(xiàn)只有把電影片斷拉入舞臺后,在界面的左下邊才會出現(xiàn)一個文本框,里面寫得有Instance Name,如圖5,而別的元件(如圖形和按鈕元件)拉入舞臺后是不會出現(xiàn)這個框的。這個就是要求你給接入舞臺的這個實例起一個別名,以后在操作中這個別名就代表這個實例。

圖5 實例別名輸入框
為了這個當作復制樣本的元件不可見,可以在第一幀中寫如下語句:setproperty("/y0",_visible,0),這樣,這個實例就不可見了。
為了復制這個元件,可以如下寫:i=a;,其中的i 代表循環(huán)的次數(shù)。它的值和a相等,所以題目中的加數(shù)和被加數(shù)就被轉化過來了。我們可以看到循環(huán)最后一句中的i=i-1,也就是循環(huán)一次i值會自動減1,如此就可以復制出我們要求的圖片來了。
while(i>0){duplicatemovieclip("/y0","y" add i, i );
setproperty("/y" add i,_y,100+1*50);
setproperty("/y" add i,_x,100+i*50);
i=i-1;}
這里的a等于幾,就可以復制幾個電影元件的實例出來 。所以我們只要把動態(tài)文本杠中的變量的值賦值給i就行了。復制語句的用法:duplicateMovieClip(你要復制的影片名稱,“這個新影片的名稱”,新影片的深度位置),F(xiàn)LASH中的深度就好像其中的層一樣,深度值高的表示他不被深度值低的壓住,反之,就是深度值低的如果與深度值高的相疊,那他就會被深度值高的壓住。在復制語句中我們要注意使用方法,一是被復制的實例不能同名,所以可以看到在語句中,每一個被復制的實例的名字都不同,按y1,y2……的順序出現(xiàn)。大家要特別注意復制語句中最后一個表示深度變量,它的值也不能是相同的,每一個復制的實例必須有一個全新的深度值,否則會復制不出來。
消除這些電影元件的實例,當我們不需要這些電影元件的實例時,可以利用以下語句來刪除這些實例。
on(press){i=20;
while(i>0){removemovieclip("/y" add i);
i=i-1;}
這里i的取值和你復制的實例個數(shù)有關。這里大家可能會奇怪,為什么i的值會取20,如果我們的實例個數(shù)不足會如何呢?因為我們做的這個例子是10以內的加法,所以最大值也就是20了,不會超過,如果沒到,那么刪除語句也不會報錯,它只是不起作用而已。
Flash是一款非常適宜于小學課堂教學的編程工具,它采取了對象化設計,直觀明了,所以對于沒有編程經驗的老師也同樣適用[3]。老師們只要掌握Actions命令中Movie Control中的幾個命令就能非常方便地控制程序運行了,對于在中、小學階段的教學是非常有用的。如今科學技術飛速發(fā)展,也要求我們中、小學老師能適應這個社會,在教學方法、教學模式上有所改進,希望老師們都能掌握此款軟件的應用,為基礎教育改革做出自己的貢獻。