2013-06-27 17 views
8

Próbuję nauczyć się API audio, ale otrzymuję błąd odwołania Uncaught dla klasy BufferLoader. Jestem na chromie i jest aktualny. Czy ta klasa nie powinna działać bez żadnych problemów?Brak odniesienia błędu Błąd BufferLoader nie jest zdefiniowany

<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

Gdzie jest dokumentacja do tego 'BufferLoader'? Czy mówisz o 'BufferLoader' tutaj http://chromium.googlecode.com/svn/trunk/samples/audio/doc/loading-sounds.html lub tutaj https://code.google.com/p/chromium /source/browse/trunk/samples/audio/doc/resources/buffer-loader.js?r=2681? – Ian

+0

to interfejs Web Audio API. powinien działać od razu po wyjęciu z pudełka w chromie. – oxxi

+0

Nie sądzę. Jak widać w dostarczonych linkach (i kilku innych, które znalazłem), jest to funkcja niestandardowa, którą musisz zadeklarować i użyć. – Ian

Odpowiedz

12

„klasy” BufferLoader jest funkcją zwyczaj stworzony do abstrakcyjnego wykorzystaniem Web Audio API. Nie jest to funkcja wbudowana i musi być dołączona do strony w celu użycia; nie ma nic szczególnego w tym, że Chrome to ma. Oto przykład na to, gdzie jest wyjaśnione: http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-abstract

Aby go wykorzystać, to ten kod przed użyciem:

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

OK, działa, dzięki za pomoc. – oxxi

Powiązane problemy