摘要:Flash中的ActionScrip是一種編程語言,使Flash能夠實現更多的功能。該文給出了一種制作通用朗讀類課件的構想,并介紹了用Flash中的ActionScrip具體實現的方法, 對多媒體教學課件的制作具有實用價值。
關鍵詞:ActionScrip;影片剪輯;交互性
中圖分類號:TP317.4文獻標識碼:A文章編號:1009-3044(2008)35-2280-03
Building General-reading Courseware Based on Flash
XUE Bin, FANG Da-liang
(1.Chongqing University, Chongqing 524048;2.Zhanjiang Normal College,Zhanjiang 524048, China)
Abstract: ActionScrip of Flash is one kind of programming language, enables Flash to realize more functions. This article gave one kind of manufacture to read aloud a kind of courseware general the conception, and introduced realized the method specifically with in Flash ActionScrip, had the practical value to the multimedia teaching courseware's manufacture.
Key words: ActionScrip;MovieClip;Interactive
1 引言
在語言教學課件中,經常要用標準的發音朗讀字、詞和文章,如果字和詞采用線性的方式朗讀,則課件缺乏交互性,不利于學生快速掌握朗讀中的難點。下面就筆者解決這一問題的制作心得介紹如下。
2 制作思路
2.1 字和詞的處理
對于字和詞的標準發音文件,用聲音處理工具將其切割為單個的字或詞的發音文件,并存儲為序列MP3聲音文件。(如:讀的詞是“恰好、啤酒、簸箕”,將這個聲音切割為三個MP3文件,分別保存為syjz0.mp3、syjz1.mp3、 syjz2.mp3。)為了課件的通用性,可將這些字或詞寫到一個外部的文本文件中,并且字或詞之間用“,”隔開,這樣就可以用ActionScript載入這些字或詞并且動態地放置到按鈕式影片中,這樣,學習者點擊某個字或詞時,就可以聽到這個字或詞的標準發音。
2.2 文章的處理
對于整篇文章的朗讀,只需將文章內容寫入到一個外部的文本文件中,用ActionScript載入這些文字的同時,播放它的標準發音文件即可。
3 制作過程
3.1 外部文檔的制作
在Flash 文件所在的文件夾內創建一新的文件夾,命名為sound,找專業的朗讀人員用goldwave錄制字、詞及文章的聲音并分別命名為zi.mp3、ci.mp3、wenzhang.mp3,將這三個文件保存在sound文件夾中。在goldwave打開zi.mp3和ci.mp3文件,選中朗讀的第一個字的聲音波形,點擊Edit菜單下的Copy命令,再點擊Edit菜單下的Paste New,將新的聲音文件保存為zi0.mp3。重復操作,則制作出zi1.mp3、zi2.mp3、zi3.mp3、zi4.mp3……的序列文件。對于ci.mp3文件也采取相同的操作方法,產生ci1.mp3、ci2.mp3、ci3.mp3、ci4.mp3……的序列文件。
在Flash 文件所在的文件夾內創建一新的文件夾,命名為text,在text中創建一新的文本文件并命名為zi.txt,其內容為用“,”號分割開的與zi.mp3讀音順序相同的字。詞采用相同的操作方法產生ci.txt文件,其內容為用“,”號分割開的與ci.mp3讀音順序相同的詞。再創建一個新的文本文件,命名為wenzhang.txt,其內容就是文章的內容,外部文本文檔的編碼格式為Unicode編碼。
3.2 按鈕式影片的制作
打開flash新建一個flash文檔并保存為langdu.fla。在舞臺上繪制一個淡藍色、無邊框、34×34的矩形,選中按F8將其轉換為影片剪輯,并給此實例取名為btn_mc,雙擊進入btn_mc的編輯界面,選中矩形按F8將其轉換為按鈕,并將此按鈕實例的alpha值改為15%,將按鈕所在圖層命名為mcbtnlayer,新建一個圖層并命名為zicilayer,在此圖層繪制一個32×30的動態文本框,其字體大小為22,顏色為綠色,將可選狀態取消,變量名為context。將此文本框放置在按鈕的上方。選中幀,在幀動作面板中輸入var soundname;語句。選中 按鈕,在動作面板中輸入:
on (release)
{
stopAllSounds ();
mysound = new Sound();
mysound.loadSound(soundname, true);
}
3.3 時間軸布置
在主時間軸上共分為三個圖層, 由上到下依次為ActionLayer、ContextLayer、BtnLayer,ActionLayer用來寫幀代碼,ContextLayer用來顯示朗讀的文本,第2步所作的按鈕式影片實例btn_mc就放在此層,BtnLayer放置三個按鈕,分別命名為zibtn、cibtn及wenzhangbtn,按鈕上文字分別為字、詞、文章,用于朗讀字、詞和文章之間的切換。課件共一幀,全部的切換都用ActionScript代碼完成。
3.4 編寫程序
在ActionLayer圖層的幀代碼如下:
system.useCodePage = true;//用于顯示中文。
var myArr:Array=new Array();//定義數組變量用于存儲字、詞或文章的內容。
var pathofsound=\"./sound/zi\";
var log=1;
var btn_mcwidth=_root.btn_mc._width;//將按鈕式影片的寬度存儲在變量中。
_root.wenzhangarea._visible=1;//使文章顯示的文本域組件實例不可見。
function loadtext(myArr:Array,numofzici,pathofsound)
{var numofline=Math.round((Stage.width-40)/(btn_mc._width+2));
for(i=0;i { _root.btn_mc.duplicateMovieClip(\"btn_mc\" + i, i); _root[\"btn_mc\" + i].context = myArr[i]; _root[\"btn_mc\" + i].soundname = pathofsound + [i] + \".mp3\"; if (i == 0) { _root[\"btn_mc\" + i]._x = _root._x+45; continue; } // end if if (i % numofline == 0) { _root[\"btn_mc\" + i]._x = _root._x+45; _root[\"btn_mc\" + i]._y = i / numofline * _root.btn_mc._height +_root.btn_mc._y + i / numofline * 5; continue; } // end if _root[\"btn_mc\" + i]._x = _root[\"btn_mc\" + (i - 1)]._x + _root.btn_mc._width + 2; _root[\"btn_mc\" + i]._y = _root[\"btn_mc\" + (i - 1)]._y; }//end for _root.btn_mc._visible=1; }//end of function /*此函數完成根據字或詞的多少復制按鈕式影片剪輯,并將對應的序列聲音文件和復制的按鈕式影片剪輯綁定,并根據舞臺的寬度安排復制得到的按鈕式影片式剪輯的位置。最后將按鈕式影片剪輯設置為不可見。*/ var my_lv:LoadVars = new LoadVars();/*定義加載變量對象的實例,此實例用于加載外部文檔。*/ my_lv.onData = function(rw) { if(_root.log==2){ _root.unloadtext(myArr.length); myArr=rw.split(\",\"); var numofzici=myArr.length; _root.loadtext(myArr,numofzici,_root.pathofsound); }else{ if(_root.log==3){ _root.unloadtext(myArr.length); _root.wenzhangarea.text=rw; }else{ myArr=rw.split(\",\"); var numofzici=myArr.length; _root.loadtext(myArr,numofzici,_root.pathofsound); }}};//end of function /*此函數完成根據log值判斷并完成字、詞或文章的加載。*/ function unloadtext(numofsc) { for (i = 0; i <= numofsc; i++) { removeMovieClip (\"btn_mc\" + i); } // end of for } // End of the function /*此函數用于刪除復制的按鈕式影片剪輯。即:當顯示的內容切換時,將前面顯示的內容清除掉。*/ function lineplaysound(soundpath) { stopAllSounds (); mysoundall = new Sound(); mysoundall.loadSound(soundpath, true); } // End of the function /*此函數用于線性播放字、詞或文章的聲音。*/ my_lv.load(\"./text/zi.txt\");//初始界面加載字的內容。 var soundpath=\"./sound/zi.mp3\"; lineplaysound(soundpath); _root.zibtn.enabled = 1; _root.zibtn._alpha = 30; _root.cibtn.enabled = true; _root.wenzhangbtn.enabled = true; stop(); 字按鈕zibtn上的代碼如下: on(release){ _root.wenzhangarea._visible=1; _root.btn_mc._visible=true; _root.btn_mc._width=_root.btn_mcwidth; _root.pathofsound=\"./sound/zi\"; _root.log=1; _root.my_lv.load(\"./text/zi.txt\"); _root.soundpath=\"./sound/zi.mp3\"; _root.lineplaysound(soundpath); _root.zibtn.enabled = 1; _root.zibtn._alpha=30; _root.cibtn.enabled = true; _root.cibtn._alpha = 100; _root.wenzhangbtn.enabled = true; _root.wenzhangbtn._alpha=100; } /*上面的代碼實現字的載入,并線性播放所有字的讀音,同時使字按鈕zibtn不可用,詞按鈕cibtn和文章按鈕wenzhangbtn可用。*/ 詞按鈕cibtn和文章按鈕wenzhangbtn上的代碼與字按鈕zibtn上的代碼相似,由于篇幅所限,在這里只作說明。詞按鈕cibtn上代碼:由于詞的寬度大于字的寬度,所以要將按鈕式影片剪輯的寬度乘2.5;同時使詞按鈕cibtn不可用,字按鈕zibtn和文章按鈕wenzhangbtn可用。文章按鈕wenzhangbtn上的代碼:由于載入文章是用文本域組件實例載入,所以要將文本域組件實例設為可見,而刪除與按鈕式影片剪輯相關的語句;同時使文章按鈕wenzhangbtn不可用,字按鈕zibtn和詞按鈕cibtn可用。 4 結束語 此課件可用于語文、英語、普通話等語言類內容的識字發音教學,在應用時,只需將外部文檔的內容和相應的聲音更改即可。如果將此課件加以擴展和網絡編程工具相結合,則可實現課件內容的動態更新。