【摘要】Flash是Macromedia公司開(kāi)發(fā)的交互式矢量圖和動(dòng)畫(huà)制作軟件,它也被廣泛地運(yùn)用到教學(xué)課件的制作中,聲音是課件中不可缺少的元素之一,但是,在Flash軟件中運(yùn)用聲音文件時(shí)會(huì)經(jīng)常遇到一些問(wèn)題,文章介紹了如何解決這些問(wèn)題的方法。
【關(guān)鍵詞】Flash課件,聲音,解決方法
【中圖分類號(hào)】G434 【文獻(xiàn)標(biāo)識(shí)碼】B 【論文編號(hào)】1009—8097(2007)08—0079—03
1997年Flash開(kāi)始出現(xiàn)在中國(guó),近十年來(lái),F(xiàn)lash已從當(dāng)初的Flash 2版本發(fā)展到今天最新的Flash 8(Flash 9將于2007年正式發(fā)布)。運(yùn)用Flash制作的教學(xué)課件以其文件小、無(wú)級(jí)縮放不變形、交互性強(qiáng)、動(dòng)畫(huà)模擬逼真和使用方便等諸多優(yōu)點(diǎn)深受廣大教師喜愛(ài)。
在多媒體教學(xué)課件的制作過(guò)程中,經(jīng)常會(huì)使用背景音樂(lè)、課文范讀和音效聲音等文件,聲音在課件中恰如其分地運(yùn)用,會(huì)使課件畫(huà)龍點(diǎn)睛,充滿活力,F(xiàn)lash支持*.mp3(Windows或Macintosh)、*.wav(僅限Windows)和Aiff(僅限Macintosh)等格式聲音文件,為多媒體和課件制作提供了很大的方便。
但是,在運(yùn)用Flash制作課件過(guò)程中,也會(huì)經(jīng)常遇到一些聲音運(yùn)用方面問(wèn)題,正確與靈活地解決這些問(wèn)題會(huì)讓我們創(chuàng)作出的多媒體教學(xué)課件作品更加豐富多彩。
一、mp3聲音文件不能被導(dǎo)入問(wèn)題的解決辦法
Flash直接支持導(dǎo)入的聲音文件是*.mp3格式的聲音文件,導(dǎo)入的聲音文件就儲(chǔ)存在Flash影片文件內(nèi)部,*.mp3格式聲音文件使用的靈活性更大,它也可以儲(chǔ)存在Flash影片文件外部,當(dāng)Flash影片文件執(zhí)行到一定的時(shí)候,通過(guò)動(dòng)作腳本(ActionScript)能調(diào)用所需的*.mp3聲音文件。
在Flash課件制作過(guò)程中經(jīng)常需要直接導(dǎo)入*.mp3聲音文件,但有時(shí)在導(dǎo)入某一個(gè)*.mp3聲音文件時(shí)會(huì)出現(xiàn)無(wú)法導(dǎo)入的情況,這時(shí)彈出一個(gè)對(duì)話窗:讀取文件時(shí)出現(xiàn)問(wèn)題,一個(gè)或者多個(gè)文件沒(méi)有導(dǎo)入(如圖1所示)。
*.mp3格式的聲音文件導(dǎo)入不成功,是個(gè)常見(jiàn)的老大難問(wèn)題。但是,這個(gè)出錯(cuò)的原因都是非標(biāo)準(zhǔn)格式惹的禍。解決的辦法有二個(gè)。方法一是利用相關(guān)的音頻處理軟件對(duì)這一聲音進(jìn)行處理,例如:豪杰超級(jí)解霸或Goldwave軟件就能對(duì)*.mp3聲音文件進(jìn)行相應(yīng)的處理,使不能被Flash導(dǎo)入的*.mp3聲音文件轉(zhuǎn)變?yōu)槟鼙籉lash導(dǎo)入的標(biāo)準(zhǔn)*.mp3聲音文件。超級(jí)解霸3000英雄版中就有音頻工具-“mp3格式轉(zhuǎn)換器”打開(kāi)后就能看到下圖所示界面(如圖2所示),添加要被處理的mp3文件點(diǎn)擊設(shè)置,將這個(gè)聲音文件重新壓縮到第三層(如圖3所示),處理后的mp3文件就可以被Flash導(dǎo)入。
GoldWave 是一款專業(yè)的數(shù)字音頻編輯軟件(圖4),只需要利用它打開(kāi)要處理的mp3文件,然后再另存為“屬性為:layer-3 ACM44100HZ,128 kbps,單聲或立體聲”就行了,如圖5所示。
方法二是不直接導(dǎo)入這個(gè)mp3聲音文件,而采用動(dòng)作腳本(ActionScript)來(lái)調(diào)入這個(gè)不能被直接導(dǎo)入的mp3文件,具體動(dòng)作腳本如下(腳本語(yǔ)句后面是注釋):
在某一幀輸入以下語(yǔ)句:
mysound=new Sound();//新建一個(gè)聲音對(duì)象;
mysound.loadSound(\"希望.mp3\",true);
//調(diào)用外部文件名為“希望”的mp3聲音文件;
mysound.start(0,1)//聲音從頭開(kāi)始播放,循環(huán)次數(shù)為一次。
當(dāng)然Flash影片播放到含有這一動(dòng)作腳本的語(yǔ)句時(shí),flash文件調(diào)用在同一文件夾中的“希望.mp3”聲音文件,聲音會(huì)被調(diào)用并正常播放。
二、多個(gè)聲音文件音量大小的控制問(wèn)題
在Flash課件中,有時(shí)會(huì)遇到同一畫(huà)面中需要二個(gè)聲音同時(shí)出現(xiàn)的情況。例如:一個(gè)聲音是朗讀聲,另一個(gè)可能是背景音樂(lè),一般情況下要求背景音樂(lè)的音量小一些,朗讀聲音較大一點(diǎn),由于背景音樂(lè)和朗讀聲音往往不是同一人錄制的,所以經(jīng)常會(huì)遇到背景音樂(lè)的音量比朗讀聲音音量大的情況,一般遇到這種情況下大家通常都會(huì)想到采用動(dòng)作腳本:mySound.setVolume(volume)來(lái)改變這種狀況,通過(guò)設(shè)定當(dāng)中的volume值來(lái)改變背景音樂(lè)的音量,其結(jié)果往往是朗讀聲和背景音樂(lè)的音量一道變小了,不能達(dá)到預(yù)想的效果。具體動(dòng)作腳本如下:
sound1=new Sound();//新建朗讀聲音對(duì)象;
sound2=new Sound();//新建背景聲音對(duì)象;
sound1.attachSound(\"sound1id\");//朗讀聲音綁定庫(kù)中的聲音文件,標(biāo)識(shí)符為sound1id;
sound2.attachSound(\"sound2id\");//背景聲音綁定庫(kù)中的聲音文件,標(biāo)識(shí)符為sound2id;
sound1.setVolume(50);//設(shè)定朗讀聲音的音量為原來(lái)的一半;
sound1.start();//朗讀聲音播放
sound2.start();//背景聲音播放
實(shí)際上得到的結(jié)果卻是sound2(背景聲音)和sound1(朗讀聲音)都同時(shí)減小到原來(lái)音量的一半。
為什么會(huì)是這樣呢?在ActionScript字典中明確指出:為指定的影片剪輯創(chuàng)建新的 Sound 對(duì)象,如果沒(méi)有指定目標(biāo)實(shí)例,則 Sound 對(duì)象控制影片中的所有聲音。所以解決這一問(wèn)題的方法是就是要指定目標(biāo)實(shí)例,重寫(xiě)代碼如下:
sound1 = new Sound(this);
sound1.attachSound(\"sound1id\");
sound1.start();
sound1.setVolume(50);
this. createEmptyMovieClip(\"mc\", 1);
sound2 = new Sound(\"mc\");
sound2.attachSound(\"sound2id\");
sound2.start();
sound2.setVolume(80);
這就通過(guò)具體的數(shù)值分別設(shè)定了二個(gè)聲音的各自的音量大小,其中背景聲音的音量為原來(lái)的80%,而朗讀聲音的音量則為原來(lái)的一半。另外還有一個(gè)方法是通過(guò)其他的mp3處理軟件(如:MP3GainGUI)來(lái)增大mp3的音量,從而解決上述問(wèn)題。
三、使用動(dòng)作loadMovie()調(diào)用SWF文件時(shí)出現(xiàn)聲音消失的問(wèn)題
在互聯(lián)網(wǎng)時(shí)代,網(wǎng)上有許多優(yōu)秀的Flash課件或其他的Flash動(dòng)畫(huà),其中有一些或一部分適合運(yùn)用在自己的Flash課件中,因此,通常會(huì)使用loadMovie()動(dòng)作腳本來(lái)調(diào)用另外一個(gè)存放在外部的Flash影片文件(*.swf文件),被調(diào)用的*.swf文件可能是自己做的,也可能是從網(wǎng)上下載的別人做課件。例如:Flash課件A(A.swf文件)中采用loadMovie()調(diào)用另一文件B(B.swf文件),如果B.swf文件上的聲音是直接放在時(shí)間軸上,A調(diào)用B時(shí),B文件中的聲音能在A中正常播放,如果B.swf文件中是用動(dòng)作腳本new Sound()及attachSound (\"soundLinkageID \")等建立的聲音,則有可能出現(xiàn)不能正常播放現(xiàn)象。例如:新建一個(gè)flash文檔,導(dǎo)入一聲音文件到庫(kù)中,按F11或Ctrl+L打開(kāi)庫(kù)面板,選中庫(kù)中聲音文件,點(diǎn)鼠標(biāo)右鍵在出現(xiàn)的菜單中點(diǎn)“鏈接”,然后在彈出的對(duì)話“鏈接屬性”對(duì)話窗中輸入標(biāo)識(shí)符名稱soundLinkageID并釣選“為動(dòng)作腳本導(dǎo)出”,最后確定?;氐街鲌?chǎng)景,在幀上輸入下列動(dòng)作:
var mySound = new Sound();
mySound.attachSound(\"soundLinkageID\");
mySound.start(0,1);
測(cè)試影片就會(huì)發(fā)現(xiàn)聲音的播放很正常,可是一旦它被另一個(gè)swf文件采用loadMovie()調(diào)用,聲音就不播放了。問(wèn)題出在哪里呢?
我們應(yīng)該先知道聲音不能播放的原因所在,然后才能進(jìn)行對(duì)癥下藥。因?yàn)檫\(yùn)用attachSound是從庫(kù)中復(fù)制聲音到舞臺(tái)的。而loadMovie后存在多個(gè)庫(kù),想從一個(gè)沒(méi)有包含聲音的庫(kù)中得到聲音,自然不會(huì)成功。那么究竟是從哪個(gè)庫(kù)中復(fù)制呢?測(cè)試證明,是綁定聲音對(duì)象的影片剪輯對(duì)應(yīng)的庫(kù)。所謂的綁定聲音的mc,就是創(chuàng)建聲音對(duì)象時(shí)用到的參數(shù):
var mySound = new Sound(mc);
如果缺少參數(shù),則是創(chuàng)建全局聲音(原先誤以為是默認(rèn)取_root,其實(shí)是不對(duì)的)。下面是Flash MX2004[1]幫助里面的一個(gè)Sound 對(duì)象的構(gòu)造函數(shù)示例:
在這個(gè)示例的動(dòng)作腳本的第一行中創(chuàng)建名為 global_sound 的新 Sound 對(duì)象,腳本的第二行運(yùn)用 setVolume() 并將影片中的所有聲音的音量調(diào)整為 50%。
global_sound = new Sound();
global_sound.setVolume(50);
此時(shí)的庫(kù)是主swf對(duì)應(yīng)的庫(kù),而主swf中的庫(kù)自然沒(méi)有要復(fù)制的聲音了,這便是問(wèn)題之所在。
解決方案是:先創(chuàng)建聲音時(shí)指定綁定mc,如果是幀上的AS,用 var mySound = new Sound(this) 即可?;蛘呤褂胈lockroot[2]強(qiáng)制令: _lockroot.=true,然后 var mySound = new Sound(_root);需要注意的是_lockroot需要FlashPlayer 7以上版本支持 。
在課件中,恰當(dāng)?shù)剡\(yùn)用聲音文件可以使Flash動(dòng)畫(huà)和課件作品更加生動(dòng)活潑,實(shí)現(xiàn)文字和圖像達(dá)不到的聽(tīng)覺(jué)上的效果,聲音在多媒體創(chuàng)作和教學(xué)課件制作中可以說(shuō)是不可缺少的素材,通過(guò)Flash功能強(qiáng)大的動(dòng)作腳本,我們可以靈活地使用和控制聲音文件,創(chuàng)作出豐富多彩、生動(dòng)活潑和富有吸引力的Flash教學(xué)課件。
參考文獻(xiàn)
[1]動(dòng)作腳本 (ActionScript) 字典. Flash MX2004幫助. Macromedia. 2002
[2]ActionScript 2.0 語(yǔ)言參考.Macromedia Flash Professional 8 幫助文件. 2005