2013-06-27 9 views
8

Audio APIを学習しようとしましたが、BufferLoaderクラスのUncaught参照エラーが発生しました。私はクロムの上にあり、それは最新です。このクラスは問題なく動作するはずですか?キャッチされていない参照エラーBufferLoaderが定義されていません

<html> 
<head> 
<script type=text/javascript> 

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



    function init(){ 

    context = new webkitAudioContext(); 
    bufferLoader = new BufferLoader(
      context, 
      [ 
      ' https://dl.dropboxusercontent.com/u/1957768/kdFFO3.wav', 
      ' https://dl.dropboxusercontent.com/u/1957768/geniuse%20meodies.wav', 
      ], 
      finishedLoading 
     ); 
    bufferLoader.load(); 
} 

    function finishedLoading(bufferList){ 
    //make two sources and play them 
    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.start(0); 
    source2.start(0); 
} 


    </script> 
    </head> 
    <body> 
    </body> 
    </html> 
+0

? http://chromium.googlecode.com/svn/trunk/samples/audio/doc/loading-sounds.htmlまたはhttps://code.google.com/p/chromiumの「BufferLoader」についてここで話していますか? /source/browse/trunk/samples/audio/doc/resources/buffer-loader.js?r=2681? – Ian

+0

は、Web Audio APIです。それはクロムの箱からすぐに動作するはずです。 – oxxi

+0

私はそうは思わない。提供されているリンク(および私が見つけたいくつかの他のリンク)に見られるように、宣言して使用するカスタム関数です。 – Ian

答えて

12

BufferLoader「クラスは、」ウェブオーディオAPIの抽象化を使用し作成したカスタム関数です。これは組み込みの機能ではなく、使用するためにページに含める必要があります。これを持つChromeには特別なことは何もありません。 http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-abstract

を使用するには、それが使用される前に、このコードが含まれ、::ここでは説明されている場所の例です

この `BufferLoader`のドキュメントである
function BufferLoader(context, urlList, callback) { 
    this.context = context; 
    this.urlList = urlList; 
    this.onload = callback; 
    this.bufferList = new Array(); 
    this.loadCount = 0; 
} 

BufferLoader.prototype.loadBuffer = function(url, index) { 
    // Load buffer asynchronously 
    var request = new XMLHttpRequest(); 
    request.open("GET", url, true); 
    request.responseType = "arraybuffer"; 

    var loader = this; 

    request.onload = function() { 
    // Asynchronously decode the audio file data in request.response 
    loader.context.decodeAudioData(
     request.response, 
     function(buffer) { 
     if (!buffer) { 
      alert('error decoding file data: ' + url); 
      return; 
     } 
     loader.bufferList[index] = buffer; 
     if (++loader.loadCount == loader.urlList.length) 
      loader.onload(loader.bufferList); 
     }, 
     function(error) { 
     console.error('decodeAudioData error', error); 
     } 
    ); 
    } 

    request.onerror = function() { 
    alert('BufferLoader: XHR error'); 
    } 

    request.send(); 
} 

BufferLoader.prototype.load = function() { 
    for (var i = 0; i < this.urlList.length; ++i) 
    this.loadBuffer(this.urlList[i], i); 
} 
+1

これはうまくいきます、助けてくれてありがとう。 – oxxi

関連する問題