AudioBufferSourceNode: start() 方法
AudioBufferSourceNode 介面的 start() 方法用於排程緩衝區中包含的音訊資料的播放,或立即開始播放。
語法
start(when)
start(when, offset)
start(when, offset, duration)
引數
when可選-
聲音應該開始播放的時間(以秒為單位),使用與
AudioContext相同的時座標系。如果when小於 (AudioContext.currentTime),或者為 0,則聲音會立即開始播放。預設值為 0。 offset可選-
一個偏移量,以與
AudioContext相同的時座標系下的秒數指定,表示在音訊緩衝區內播放應該開始的時間。例如,要在一個 10 秒的音訊剪輯中途開始播放,offset應該為 5。預設值 0 會從音訊緩衝區的開頭開始播放,超過音訊末尾(基於音訊緩衝區的duration和/或loopEnd屬性)的偏移量將被靜默地限制在允許的最大值。到聲音的偏移量的計算是使用聲音緩衝區的自然取樣率進行的,而不是當前播放速率,因此即使聲音以正常速度的兩倍播放,一個 10 秒的音訊緩衝區的中間點仍然是 5。 duration可選-
要播放的聲音的時長,以秒為單位指定。如果未指定此引數,則聲音會一直播放直到自然結束,或者使用
stop()方法停止。使用此引數在功能上等同於呼叫start(when, offset)然後呼叫stop(when+duration)。
返回值
無(undefined)。
異常
TypeError-
如果為三個時間引數中的一個或多個指定了負值,則丟擲此異常。請不要試圖干擾時間物理定律。
InvalidStateErrorDOMException-
如果
start()已經被呼叫,則丟擲此異常。在AudioBufferSourceNode的生命週期中,您只能呼叫此函式一次。
示例
最簡單的例子就是讓音訊緩衝區從頭開始播放——在這種情況下,您不需要指定任何引數。
source.start();
以下更復雜的示例將從現在起 1 秒後開始播放音訊緩衝區中從第 3 秒開始的 10 秒聲音。
source.start(audioCtx.currentTime + 1, 3, 10);
注意: 有關 start() 用法的更完整示例,請檢視我們的 AudioContext.decodeAudioData() 示例。您也可以 嘗試即時示例,並檢視 示例原始碼。
規範
| 規範 |
|---|
| Web Audio API # dom-audiobuffersourcenode-start |
瀏覽器相容性
載入中…