2012-10-28 238 views
3

我在Chrome的遊戲中使用網絡音頻API。要播放聲音,我使用網絡音頻API。網絡音頻API:如何播放和停止音頻?

我學會從文章:http://www.html5rocks.com/en/tutorials/webaudio/intro/

window.onload = init; 
var context; 
var bufferLoader; 

function init() { 
context = new webkitAudioContext(); 

bufferLoader = new BufferLoader(
context, 
[ 
'0.mp3', 
'2.mp3', 
], 
finishedLoading 
); 

bufferLoader.load(); 
} 

function finishedLoading(bufferList) { 

var source1 = context.createBufferSource(); 
var source2 = context.createBufferSource(); 
source1.buffer = bufferList[0]; 
source2.buffer = bufferList[1]; 

source1.connect(context.destination); 
source2.connect(context.destination); 
source1.noteOn(0); 
source2.noteOn(0); 
} 

然而,聲音是沒有打過。別說我想用noteOff(0)稍後停止它們。

然後我發現這篇文章http://updates.html5rocks.com/2012/02/HTML5-audio-and-the-Web-Audio-API-are-BFFs

而且我改變我的代碼:

var context = new webkitAudioContext(); 
    var analyser = context.createAnalyser(); 
    var source; 
    var audio0 = new Audio(); 
    audio0.src = '0.mp3'; 
    audio0.controls = true; 
    audio0.autoplay = true; 
    audio0.loop = true; 
    source = context.createMediaElementSource(audio0); 
    source.connect(analyser); 
    analyser.connect(context.destination); 

這一次更是打出了!

而我的問題在於:我想用按鈕停止聲音。

我試圖改變audio0.autoplay = false;

 var play0 = false; 
     $("#0").click(function(){ 
    if(play0===false){ 
    audio0.src = '0.mp3'; 
    audio0.controls = true; 
    audio0.autoplay = true; 
    audio0.loop = true; 
    source = context.createMediaElementSource(audio0); 
    source.connect(analyser); 
    analyser.connect(context.destination); 
    play0=true;} 

    if(paly0){ 
    audio0.autoplay=false;} 

    }); 

代替停止,它每次點擊按鈕時再次播放。

兩個問題:

  1. 什麼是這兩種音頻播放方式之間的區別?

  2. 如何手動停止聲音?

任何幫助,非常感謝。

+0

你想'audio0.pause()'? – pimvdb

+1

@primvdb,不,但停止。 – kikkpunk

+0

沒有停止,所以只需按照pimvdb的建議暫停。 –

回答

4

您可以暫停音頻元素並將其時間設置爲0,以便您實際上具有「停止」功能:http://jsfiddle.net/Z5ZuJ/

audio0.pause(); 
audio0.currentTime = 0;