2014-12-04 140 views
3

我正在使用HTML5音頻應用程序將聲音合併到我的遊戲中。如何創建一個AudioBufferSourceNode來啓動和停止在AudioBuffer中間播放?如何告訴AudioBufferSourceNode在緩衝區中開始和結束?

我什麼也沒有發現在AudioBufferSourceNode界面,用於創建,在緩衝區的中間開始的AudioBufferSourceNode: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBufferSourceNode

我想我可以創建與原AudioBuffer的切片AudioBufferSourceNode,但我要保護因爲我的遊戲已經使用了大量的JavaScript堆內存,所以我真的不想複製AudioBuffers或創建其中的一部分。我只想製作幾個AudioBufferSourceNodes,每個AudioBufferSourceNodes播放單個AudioBuffer的一部分。

我該怎麼做?

回答

5

只需使用附加(可選)的參數AudioBufferSourceNode#start

// begin playback immediately, starting at second 10 of the buffer 
// and lasting 20 seconds 
sourceNode.start(audioContext.currentTime, 10, 20); 

第一個參數是when,你可能熟悉。這只是確定聲音何時開始播放,使用AudioContext#currentTime的座標系。第二個參數是offset。這是進入您的AudioBuffer實例的秒數。所以如果你想在10秒內開始播放緩衝區,你可以在這裏通過10

第三個參數是duration。也在幾秒鐘內,並希望非常自我解釋。如果不是,則確定聲音播放的時間。

+1

我剛剛刪除了我的答案 - 我jsbinned從我的例子我的代碼,並意識到我誤解了這個問題:)我正在考慮循環不定義一個開始時間的特定部分。 @Kevin是關於'start()'的第二個參數。以下是jsbin中的一個更新示例:http://jsbin.com/joxufasoba/2/edit?js,output – 2014-12-04 01:34:23

相關問題