創(chuàng)客作品:自制足球游戲解說員
上述AS3使用了兩個“聲音”對象。一個用于存儲mp3文件中來自外部文件的數(shù)據(jù);另一個用于播放實際聲音。詳細解釋工作原理的注釋不多,不過還是有必要了解幾個核心概念:
本文引用地址:http://www.ex-cimer.com/article/268066.htm在音頻播放前(送到聲卡)我們借助eventlistener用wavdata填充“外向的”聲音對象,即發(fā)送到聲卡前詢問的數(shù)據(jù),這些數(shù)據(jù)決定顯示哪個口型。
如果希望播放聲音,我們只需告訴設備,從哪個位置開始提取已加載聲音數(shù)據(jù)的wavdata字節(jié)即可。當?shù)竭_示例音頻的最后部分,我們就停止音頻播放。
最棘手的部分是將Audacity中的標簽數(shù)據(jù)轉(zhuǎn)換成“示例數(shù)據(jù)抵消”值以及使音頻在恰當?shù)奈恢脝?停止。Audacity中的標簽位置由運行時間決定。但“樣本”數(shù)據(jù)不基于時間,這就使其與Flash匹配出現(xiàn)問題。
對于每個示例,Flash都占用4個字節(jié),據(jù)此可以計算出,一秒的音頻數(shù)據(jù),若以CD品質(zhì)44.1 khz記錄則應該包含44100 * 8 = 352800個字節(jié)。所以如果我們開始從mp3文件中提取樣本數(shù)據(jù)并加載352800字節(jié),就可以有效地播放一秒的音頻。同樣,從5秒開始回放則需要從44100 * 8 * 5 = 1764000字節(jié)處開始提取音頻樣本數(shù)據(jù)。
為了減少文件大小(并縮減操縱文件開銷)我們在mono mp3樣本、以11025 hz頻率進行記錄。這就意味著每個示例中我們只占用4字節(jié)(因為沒有左/右跟蹤,針對單個、mono追蹤我們只占用4個字節(jié)為)而非8個。所以我們需要計算字節(jié)偏移量為:
startByte= 11025 * 4 * timeInSeconds
網(wǎng)址如下:http://www.nerdclub.co.uk/lipsync_demo.htm
但任務還沒完成,例如我們?nèi)孕枰獜耐獠课募虞d線索點(并非將其嵌入AS3代碼中)。但無論怎樣我們已經(jīng)大體上闡明了設計思想。一旦從外部文件完成線索點和實際mp3音頻的加載,我們就有足夠的理由說,我們這款屬于用戶可編輯類型的足球游戲有望實現(xiàn)!
評論