fireball/lib/loaders/AudioLoader.js

50 lines
1.0 KiB
JavaScript
Raw Permalink Normal View History

2018-12-25 13:59:22 +00:00
import { AudioContext } from '../audio/AudioContext.js';
import { FileLoader } from './FileLoader.js';
import { DefaultLoadingManager } from './LoadingManager.js';
/**
* @author Reece Aaron Lecrivain / http://reecenotes.com/
*/
function AudioLoader( manager ) {
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
}
Object.assign( AudioLoader.prototype, {
load: function ( url, onLoad, onProgress, onError ) {
var loader = new FileLoader( this.manager );
loader.setResponseType( 'arraybuffer' );
loader.setPath( this.path );
loader.load( url, function ( buffer ) {
// Create a copy of the buffer. The `decodeAudioData` method
// detaches the buffer when complete, preventing reuse.
var bufferCopy = buffer.slice( 0 );
var context = AudioContext.getContext();
context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
onLoad( audioBuffer );
} );
}, onProgress, onError );
},
setPath: function ( value ) {
this.path = value;
return this;
}
} );
export { AudioLoader };