buffer-loader.js (1177B)
1 /* Taken from 2 https://raw.github.com/WebKit/webkit/master/LayoutTests/webaudio/resources/buffer-loader.js */ 3 4 function BufferLoader(context, urlList, callback) { 5 this.context = context; 6 this.urlList = urlList; 7 this.onload = callback; 8 this.bufferList = new Array(); 9 this.loadCount = 0; 10 } 11 12 BufferLoader.prototype.loadBuffer = function(url, index) { 13 // Load buffer asynchronously 14 var request = new XMLHttpRequest(); 15 request.open("GET", url, true); 16 request.responseType = "arraybuffer"; 17 18 var loader = this; 19 20 request.onload = function() { 21 loader.context.decodeAudioData(request.response, decodeSuccessCallback, decodeErrorCallback); 22 }; 23 24 request.onerror = function() { 25 alert('BufferLoader: XHR error'); 26 }; 27 28 var decodeSuccessCallback = function(buffer) { 29 loader.bufferList[index] = buffer; 30 if (++loader.loadCount == loader.urlList.length) 31 loader.onload(loader.bufferList); 32 }; 33 34 var decodeErrorCallback = function() { 35 alert('decodeErrorCallback: decode error'); 36 }; 37 38 request.send(); 39 } 40 41 BufferLoader.prototype.load = function() { 42 for (var i = 0; i < this.urlList.length; ++i) 43 this.loadBuffer(this.urlList[i], i); 44 }