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