2013-06-27 32 views
8

Ses API'sini öğrenmeye çalışıyorum, ancak BufferLoader sınıfı için Yakalanmamış bir başvuru hatası alıyorum. Ben kromdayım ve güncel. Bu sınıf problemsiz çalışmamalı mı?Yakalanmamış başvuru hatası BufferLoader tanımlı değil

<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 adresinden veya burada https://code.google.com/p/chromium adresinden 'BufferLoader' hakkında konuşuyor musunuz? /source/browse/trunk/samples/audio/doc/resources/buffer-loader.js?r=2681? Web Ses API'sı – Ian

+0

. Kromdaki kutudan çıkmalı. – oxxi

+0

Ben öyle düşünmüyorum. Sağladığınız bağlantılarda (ve bulduğum diğer bir çok) gördüğünüz gibi, bildirmeniz ve kullanmanız gereken özel bir işlevdir. – Ian

cevap

12

BufferLoader "sınıfı" Web Audio API soyut kullanımı için oluşturulan özel bir fonksiyonudur. Bu yerleşik bir özellik değildir ve kullanılması için sayfanıza dahil edilmelidir; Chrome'un buna sahip olmasıyla ilgili özel bir şey yok. http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-abstract

kullanmak için kullanılmadan önce bu kodu içerir,: Burada izah nerede bulunduğunu gösteren bir örnek

bu `BufferLoader` için dokümantasyonudur
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

Tamam, bu çalışmalar için teşekkürler. – oxxi

İlgili konular