blob: 03f7e393050ad2aab3564617fa049123313da91e [file] [log] [blame]
var audioControllerFactory = (function() {
function AudioController(audioFactory) {
this.audios = [];
this.audioFactory = audioFactory;
this._volume = 1;
this._isMuted = false;
}
AudioController.prototype = {
addAudio: function(audio) {
this.audios.push(audio);
},
pause: function() {
var i, len = this.audios.length;
for(i = 0; i < len; i += 1) {
this.audios[i].pause()
}
},
resume: function() {
var i, len = this.audios.length;
for(i = 0; i < len; i += 1) {
this.audios[i].resume()
}
},
setRate: function(rateValue) {
var i, len = this.audios.length;
for(i = 0; i < len; i += 1) {
this.audios[i].setRate(rateValue)
}
},
createAudio: function(assetPath) {
if (this.audioFactory) {
return this.audioFactory(assetPath);
} else if (Howl) {
return new Howl({
src: [assetPath]
})
} else {
return {
isPlaying: false,
play: function(){this.isPlaying = true},
seek: function(){this.isPlaying = false},
playing: function(){},
rate: function(){},
setVolume: function(){},
}
}
},
setAudioFactory: function(audioFactory) {
this.audioFactory = audioFactory;
},
setVolume: function(value) {
this._volume = value;
this._updateVolume();
},
mute: function() {
this._isMuted = true;
this._updateVolume();
},
unmute: function() {
this._isMuted = false;
this._updateVolume();
},
getVolume: function(value) {
return this._volume;
},
_updateVolume: function() {
var i, len = this.audios.length;
for(i = 0; i < len; i += 1) {
this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1))
}
}
}
return function() {
return new AudioController()
}
}())