2013-06-27 4 views
8

Vous essayez d'apprendre l'API audio, mais j'obtiens une erreur de référence Uncaught pour la classe BufferLoader. Je suis sur le chrome et c'est à jour. Cette classe ne devrait-elle pas fonctionner sans problèmes?Erreur de référence non interceptée BufferLoader n'est pas défini

<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

Où se trouve la documentation de ce 'BufferLoader'? Parlez-vous du 'BufferLoader' d'ici http://chromium.googlecode.com/svn/trunk/samples/audio/doc/loading-sounds.html ou ici https://code.google.com/p/chromium /source/browse/trunk/samples/audio/doc/resources/buffer-loader.js?r=2681? – Ian

+0

est l'API Web Audio. il devrait fonctionner dès la sortie de la boîte en chrome. – oxxi

+0

Je ne pense pas. Comme vous pouvez le voir dans les liens fournis (et plusieurs autres que j'ai trouvés), c'est une fonction personnalisée que vous devez déclarer et utiliser. – Ian

Répondre

12

La BufferLoader « classe » est une fonction personnalisée créée pour abstraire l'utilisation de l'API Web Audio. Ce n'est pas une fonctionnalité intégrée, et doit être inclus dans votre page afin d'être utilisé; Il n'y a rien de spécial à propos de Chrome. Voici un exemple d'où il est expliqué: http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-abstract

Pour utiliser, inclure ce code avant d'être utilisé:

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 cela fonctionne, merci pour l'aide. – oxxi

Questions connexes