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

은 웹 오디오 API입니다. Chrome에서 바로 사용할 수 있습니다. – oxxi

+0

나는 그렇게 생각하지 않는다. 제공된 링크 (및 내가 찾은 여러 항목)에서 볼 수 있듯이 선언하고 사용해야하는 사용자 정의 함수입니다. – Ian

답변

12

BufferLoader "클래스는"웹 오디오 API의 추상적 인 사용에 만든 사용자 지정 기능입니다. 기본 제공 기능이 아니며 사용하려면 페이지에 포함되어야합니다. 이걸 가지고있는 크롬에는 특별한 것이 없습니다. 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

관련 문제