3

Chrome のゲームで Web オーディオ API を使用しています。音を鳴らすには、Web Audio 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;}

    });

停止する代わりに、ボタンをクリックするたびに再生されます。

2 つの質問:

  1. これら 2 つのオーディオ再生方法の違いは何ですか?

  2. 手動で音を止める方法を教えてください。

どんな助けでも大歓迎です。

4

1 に答える 1

5

audio 要素を一時停止して、その時間を に設定すると0、効果的に「停止」機能を利用できます: http://jsfiddle.net/Z5ZuJ/

audio0.pause();
audio0.currentTime = 0;
于 2012-10-28T15:27:25.363 に答える