2013-06-27 11 views
8

ऑडियो एपीआई सीखने की कोशिश नहीं कर रहा है, लेकिन मुझे बफरलोडर क्लास के लिए एक अनकॉटेड संदर्भ त्रुटि मिलती है। मैं क्रोम पर हूं और यह अद्यतित है। क्या इस वर्ग को कोई समस्या नहीं होनी चाहिए?असीमित संदर्भ त्रुटि बफर लोडर को

<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

जहां इस 'BufferLoader' के लिए दस्तावेज़ है? क्या आप यहां से 'बफरलोडर' के बारे में बात कर रहे हैं http://chromium.googlecode.com/svn/trunk/samples/audio/doc/loading-sounds.html या यहां https://code.google.com/p/chromium /source/browse/trunk/samples/audio/doc/resources/buffer-loader.js?r=2681? – Ian

+0

इसकी वेब ऑडियो एपीआई। यह क्रोम में बॉक्स के ठीक बाहर काम करना चाहिए। – oxxi

+0

मुझे ऐसा नहीं लगता है। जैसा कि आप प्रदान किए गए लिंक (और कई अन्य जो मैंने पाया है) में देख सकते हैं, यह एक कस्टम फ़ंक्शन है जिसे आपको घोषित करना और उपयोग करना है। – Ian

उत्तर

12

BufferLoader "वर्ग" सार वेब ऑडियो API के उपयोग करने के लिए बनाया एक कस्टम कार्य है। यह एक अंतर्निहित सुविधा नहीं है, और उपयोग करने के लिए आपके पृष्ठ में शामिल होना चाहिए; क्रोम के बारे में कुछ खास नहीं है। http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-abstract

उपयोग करने के लिए इससे पहले कि यह प्रयोग किया जाता है इस कोड में शामिल हैं,:: यहाँ है, जहां यह समझाया गया है, इसका एक उदाहरण

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

संबंधित मुद्दे