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